翻译正则表达式中的字符串数组然后在不同字符串上多次使用正则表达式以获得结果匹配然后迭代它们的最简洁有效的方法是什么?现在我正在使用以下内容:
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]);
- 正在使用单个方法而不是初始 3。(
toString
内部调用join(",")
)和replace
函数是也没有用过。 - 我们删除了不必要的 if 条件。所以这非常快。
既然你谈到了正则表达式,我想说的是
- 单个正则表达式初始化不会花费您太多。
- 如果您的目标确实是匹配数组中的单词,那么只需使用
String.indexOf
,这是解决相同问题的非正则表达式形式。
关于javascript - 将单词(字符串)数组转换为正则表达式并使用它来匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28280920/