javascript - 将单词(字符串)数组转换为正则表达式并使用它来匹配字符串

标签 javascript arrays regex string

翻译正则表达式中的字符串数组然后在不同字符串上多次使用正则表达式以获得结果匹配然后迭代它们的最简洁有效的方法是什么?现在我正在使用以下内容:

var myArray = ['peaches', 'bananas', 'papaya', 'supercity'];
var myString = 'I want some papaya and some peaches';

var regexFromMyArray = new RegExp(myArray.toString().replace(/,/g, '|'), 'gi');

var matches = myString.match(regexFromMyArray) || [];

if (matches.length) {
  for (var i = 0, l = matches.length; i < l; i++) {
    console.log('Found: ' + matches[i]);
  }
}

这里性能很重要,所以请使用简单的 javascript。

最佳答案

只需加入管道,使用 Array.join

var regexFromMyArray = new RegExp(myArray.join("|"), 'gi');

只是因为 if 条件是多余的。

for(var i = 0; i < matches.length; i++)
   console.log("Found:", matches[i]);
  1. 正在使用单个方法而不是初始 3。(toString 内部调用 join(","))和 replace 函数是也没有用过。
  2. 我们删除了不必要的 if 条件。所以这非常快。

既然你谈到了正则表达式,我想说的是

  1. 单个正则表达式初始化不会花费您太多。
  2. 如果您的目标确实是匹配数组中的单词,那么只需使用 String.indexOf,这是解决相同问题的非正则表达式形式。

关于javascript - 将单词(字符串)数组转换为正则表达式并使用它来匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28280920/

相关文章:

javascript - 如何用正则表达式解析svg `viewBox`属性?

javascript - 明智地使用 .delegate() 性能更好吗?

javascript - 向下滚动后顶部图像折叠到导航栏中

javascript - 如何在 JavaScript 中删除/更改动态创建的 CSS 类

javascript - 未找到使用外部函数执行用户脚本的 NodeJS 模块

javascript - 使用正则表达式区分单行注释和 url 模式

c - 声明字符数组时是否需要提供空字符?

java - 如何按对角线对字符串中的字符进行排序

ruby - 确定一个数组是否包含ruby中另一个数组的内容

regex - 使用 awk 进行字符串模式匹配