【问题标题】:How to use regex match in string array?如何在字符串数组中使用正则表达式匹配?
【发布时间】:2016-07-01 07:02:25
【问题描述】:

我想要这样:当输入的值与我的数组的值匹配时,写入匹配值。

这是我的代码:

//我的数组如下:

var checkNames = (document.getElementById("KPIorCounterList").value.split("\n").map(element => element.trim())).filter(v=>v != "");

我的另一个数组:myarray= ["RAB Video call drop %",RAB PS R99 drop % ","RAB PS HSDPA drop %"]

例如;将 RAB* 写入 textare 时,我应该看到,以“RAB”开头

我猜,我的代码应该如下:

  for (var i = 0; i < checkNames.length; i++) {
                    for (var j = 0; j < myarray.length; j++) {
           // var str = myarray[j].split(" "); // I am not sure for his.

            I want to this for here : (pseudo code)
            for example checkName[i] == RAB*
            if (checkName[i].match("match condition") == myarray[j])
            alert(myarray[j]);
            //I should show output myarray[j] == RAB Video call drop %",RAB PS R99 drop % ","RAB PS HSDPA drop %"
       }
    }

我该怎么办? 请..

【问题讨论】:

  • 真的没有答案,但我认为myarray["j"] 应该是myarray[j]..
  • checkNames 是临时数组吗?
  • 不,不同的数组@VladuIonut
  • 你的伪代码不是很清楚,里面是临时数组
  • 抱歉,我编辑了我的代码。 @VladuIonut

标签: javascript arrays matching string-matching regexp-substr


【解决方案1】:

function check(){
var checkNames = (document.getElementById("KPIorCounterList").value.split("\n").map(element => element.trim())).filter(v=>v != "");
var myarray = ["RAB Video call drop %", "RAB PS R99 drop % ", "RAB PS HSDPA drop %"]
for (var i = 0; i < checkNames.length; i++) {
  console.log("results for", checkNames[i])
  for (var j = 0; j < myarray.length; j++) {

      var matchString = myarray[j].match(new RegExp(checkNames[i].replace('*','.*')));
    if (matchString && myarray.indexOf(matchString[0])!==-1) {
      console.log(myarray[j]);
    }
    //I should show output myarray[j] == RAB Video call drop %",RAB PS R99 drop % ","RAB PS HSDPA drop %"
  }
}
  }
<textarea id="KPIorCounterList"></textarea>
<button onclick="check()">Check</button>

【讨论】:

  • checkName 来自“textarea.value”。我想要这个:textarea.value 是数组,如果数组 eleman 是:''RAB*'' 上面的代码应该可以工作。我该如何控制它?请@VladuIonut
【解决方案2】:

@eagle,我相信这是checkNames 的输入。如果是这样,这是我的解决方案 -

var checkNames = ['RAB*'];
var myarray = ["RAB Video call drop %","RAB PS R99 drop % ","RAB PS HSDPA drop %"];

for (var i = 0; i < checkNames.length; i++) {
    for (var j = 0; j < myarray.length; j++) {
        var formatRegExpr = checkNames[i].replace('*','.*');
        var re = new RegExp(formatRegExpr, 'g');
        alert(myarray[j].match(re));
    }
}

如果它解决了您的要求,请接受此答案。

【讨论】:

  • 我正在努力学习var re = new RegExp(formatRegExpr, 'g'); 'g' 是什么? @dinesh
  • g - 全局搜索标志。学习的好地方-regexr-dot-com
  • checkName 来自“textarea.value”。我想要这个:textarea.value 是数组,如果数组 eleman 是:''RAB*'' 上面的代码应该可以工作。我该如何控制它?请@dinesh
猜你喜欢
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 2021-10-17
  • 1970-01-01
  • 2012-06-05
  • 2013-12-25
相关资源
最近更新 更多