RegExpr和变量

时间:2016-07-09 15:43:34

标签: javascript regexp-replace

我只有一个问题可能是愚蠢的(比如每天)

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变量,谢谢,对不起我的英语

3 个答案:

答案 0 :(得分:0)

&#13;
&#13;
('1929-03-12', 'name4'),
('2023-07-01', 'name7'),
('2015-02-15', 'namex'),
('1980-12-23', 'name2'),
&#13;
&#13;
&#13;

答案 1 :(得分: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);

答案 2 :(得分: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;
});