正则表达式找到特定的结局

时间:2014-07-09 18:39:38

标签: javascript regex

如果我使用这样的新正则表达式对象:

for(i=0; i < aray.length; i++){
    searchTerm = new RegExp("\\b" + aray[i] + "(e\\b)", "gi");
    word = testText.match(searchTerm);
    if(word){
        found.push(word);
    }
}

结果数组“found”包含{one,three,piece}。 但是,如果我将其更改为:

for(i=0; i < aray.length; i++){
    searchTerm = new RegExp("\\b" + aray[i] + "(e\\b)");
    word = testText.match(searchTerm, "gi");
    if(word){
        found.push(word);
    }
}

结果数组“找到”包含{one,e,three,e,piece,e}。额外的电子来自哪里?

搜索以“e”或“es”或“et”结尾的单词的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

  

额外的电子来自哪里?

这是由于您的捕获组"(e\\b)"

使用此正则表达式来避免它:

searchTerm = new RegExp("\\b" + aray[i] + "e\\b");

答案 1 :(得分:0)

&#34; best&#34;方法是主观的,但这就是我要做的。

如果您只支持IE9及更高版本,那么强烈建议您使用filter()方法。

var myArray = [ 'bananna', 'doge', 'doges', 'doget', 'dogets' ]

var results = myArray.filter(function(item) {
   return (/(e|es|et)$/i.test(item));
});

console.log(results);

正则表达式(e|es|et)$大致转化为查找任何&#39; e&#39;或者&#39; es&#39;或者&#39; et&#39;在字符串的末尾。因此,这将匹配在&#39; e&#39;,&#39; es&#39;或&#39; et&#39;中结尾的任何单词。有关演示,请参阅jsFiddle