1

我只有一个问题可能很愚蠢(就像每天一样)

var word = []; (an array with 100 words for example)
var tab = []; // resultat
var root = "test";
var debut = "Anti";
var reg1=new RegExp("^"+debut + "+." + root,"g")
    for(var i = 0;i<word.length; i++){ 
 // a word begin with Anti and contain test pls
        if (word[i].match(reg1)){´
            tab.push(word[i])
        }
}
    console.log(tab.join(', ');

但它不起作用,我不知道如何在 regexpr 中使用变量,谢谢,对不起我的英语

4

3 回答 3

0

这是代码,但使用的是 test() 而不是 match()

 var word=["yea","antiboyahtest","antigssjshbztest"];
var debut="anti";
var root="test";
var reg=new RegExp("^"+debut+".*"+root,"g");
var tabs=[];
for(i in word){
 if(reg.test(word[i])){
  tabs.push(word[i]);
 }
}
alert(tabs);
于 2016-07-09T16:22:56.357 回答
0

var r = new RegExp('anti.*esis', 'ig')

document.write('antithesis'.match(r), '<br/>') // ["antithesis"]
document.write('antihero'.match(r), '<br/>') // null

于 2016-07-09T16:06:07.003 回答
0

解决方案使用RegExp.testArray.filter功能:

var word = ['Antitest', 'Antidot', 'Anti-next-test', 'testAnti'],
    root = "test", debut = "Anti",
    reg1 = new RegExp("^"+debut + ".*?" + root, "g");

var result = word.filter(function (w) {
    return reg1.test(w);
});

console.log(result);  // ["Antitest", "Anti-next-test"]

此外,还有一种使用Array.indexOf没有任何正则表达式的函数的附加方法,它会给出相同的结果:

...
var result = word.filter(function (w) {
    return w.indexOf(debut) === 0 && w.indexOf(root) !== -1;
});
于 2016-07-09T16:36:34.963 回答