首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何返回每个匹配的完整单词,而不是仅返回使用匹配的单词的一部分?

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

Stack Overflow用户
提问于 2016-06-16 02:31:10
回答 1查看 51关注 0票数 1

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

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-16 02:45:09

代码语言:javascript
复制
var snoop = new RegExp("\\b\\S*" + word + "\\S*", "gi");

似乎能做好这份工作。它使用单词边界检查(\b)。

但是,在ECMAScript 5.1中有更好的选择,例如使用filter

代码语言:javascript
复制
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"));

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37848924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档