1

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(', ');

しかし、それは機能しません。正規表現で変数を使用する方法がわかりません。ありがとう、私の英語でごめんなさい

4

3 に答える 3

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.testしたソリューション:Array.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 に答える
0

コードは次のとおりですが、match() の代わりに test() が使用されています。

 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 に答える