Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式以查找特定的结尾_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式以查找特定的结尾

Javascript 正则表达式以查找特定的结尾,javascript,regex,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); } } for(i=0;i

如果我使用新的正则表达式对象,如下所示:

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);
    }
}
for(i=0;i
结果数组“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);
    }
}
for(i=0;i
结果数组“found”包含{one,e,three,e,piece,e}。额外的e来自哪里

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

额外的e来自哪里

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

使用此正则表达式可以避免:

searchTerm = new RegExp("\\b" + aray[i] + "e\\b");
“最好”的方法是主观的,但我会这么做

如果您只支持IE9及以上版本,那么我强烈建议您使用该方法


正则表达式
(e | es | et)$
大致转换为在字符串末尾查找任何“e”或“es”或“et”。因此,这将匹配任何以“e”、“es”或“et”结尾的单词。请参阅演示。

附加的“e”来自找到的行
。按(word)
。实际上,match返回一个匹配数组,而不是布尔值。使用
test
方法获取布尔值。@皮特,你说得对。阅读更多关于
return/(e | es | et)$/i.test(项目)的信息@zyklus很好,不需要“g”标志,因为只有一个结尾。:)
var myArray = [ 'bananna', 'doge', 'doges', 'doget', 'dogets' ]

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

console.log(results);