Javascript 如何返回每个匹配的完整单词,而不是使用match返回匹配的单词部分?
当我运行下面的代码时,结果将是[ai,ai]。我正在尝试创建一个返回[机场,飞机]的函数。最好的办法是什么Javascript 如何返回每个匹配的完整单词,而不是使用match返回匹配的单词部分?,javascript,regex,Javascript,Regex,当我运行下面的代码时,结果将是[ai,ai]。我正在尝试创建一个返回[机场,飞机]的函数。最好的办法是什么 var gill = ['airplane', 'airport', 'apple', 'ball'] function auto(word, array) { var geo = array.join(" ") var snoop = new RegExp(word, "gi") var gip = geo.match(snoop) console.log(gip
var gill = ['airplane', 'airport', 'apple', 'ball']
function auto(word, array) {
var geo = array.join(" ")
var snoop = new RegExp(word, "gi")
var gip = geo.match(snoop)
console.log(gip)
}
auto("ai", gill)
似乎能胜任这项工作。它使用单词边界检查\b
但是,ECMAScript 5.1中有更好的选项,例如通过使用过滤器:
var gill=[
飞机
航空站
苹果
球
];
函数自动数组{
return array.filterfunctiona{
返回新的RegExpword,gi.testa;
};
}
console.logautogill,ai;
似乎能胜任这项工作。它使用单词边界检查\b
但是,ECMAScript 5.1中有更好的选项,例如通过使用过滤器:
var gill=[
飞机
航空站
苹果
球
];
函数自动数组{
return array.filterfunctiona{
返回新的RegExpword,gi.testa;
};
}
console.logautogill,ai;我认为结尾的\\S\\b太过分了。我想既然他加入了一个空格,你就可以做类似于“'\\b'+word+'[^\\s]+'的事情。不管怎样++:@Rooster你是对的。我没有真正考虑逻辑,它只是对称的,这就是为什么我这样写的原因。我删除了第二个\\b。如果开头有Unicode字母,\b将不起作用,因为它在JS正则表达式中不支持Unicode。我认为结尾的\\S\\b太过分了。我想既然他加入了一个空格,你就可以做类似于“'\\b'+word+'[^\\s]+'的事情。不管怎样++:@Rooster你是对的。我没有真正考虑逻辑,它只是对称的,这就是为什么我这样写的原因。我删除了第二个\\b。如果开头有Unicode字母,\b将不起作用,因为它在JS正则表达式中不支持Unicode。
var snoop = new RegExp("\\b\\S*" + word + "\\S*", "gi");