如果我使用这样的新正则表达式对象:
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”结尾的单词的最佳方法是什么?
答案 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。