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

时间:2016-06-16 02:31:11

标签: javascript regex

当我在下面运行此代码时,结果将为["ai", "ai"]。我正在尝试创建一个将返回["airport", "airplane"]的函数。什么是最好的方法呢?

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)

1 个答案:

答案 0 :(得分:4)

var snoop = new RegExp("\\b\\S*" + word + "\\S*", "gi");

似乎可以胜任这项工作。它使用单词边界检查(\b)。

然而,ECMAScript 5.1中有更好的选择,例如使用filter

var gill = [
  "airplane",
  "airport",
  "apple",
  "ball"
];

function auto(array, word){
  return array.filter(function(a){
    return new RegExp(word, "gi").test(a);
  });
}

console.log(auto(gill, "ai"));