Javascript 如何返回每个匹配的完整单词,而不是使用match返回匹配的单词部分?

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

当我运行下面的代码时,结果将是[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)
}

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");