我正在尝试解析大量文本以找到所有匹配的关键字。
我在数组中包含所有关键字。
例如:
var string = "hi, I need support for apple, android and nokia phones.";
var keywords = ['apple', 'nokia', 'android'];
for(i=0;i<keywords.length; i++){
var match = string.match(keywords[i]);
console.log(match);
}
现在这种做法很有用。只是寻找更好,更有效的解决方案。
答案 0 :(得分:2)
正如@freakish所说,将它们组合成一个正则表达式更有效(给出一个像样的正则表达式引擎)。当然,这需要匹配不重叠,如果你需要,你必须逐个测试。
var match = string.match(new RegExp(keywords.join("|"), "g"));
答案 1 :(得分:1)
单向;不区分大小写,整个单词,没有重复;
var string = "hi, I need support for apple, android and nokia phones.";
var keywords = ['apple', 'nokia', 'android'];
var results = [];
for(var i = 0; i < keywords.length; i++) {
if ((new RegExp("\\b" + keywords[i] + "\\b", "i").test(string)) {
results.push(keywords[i]);
}
}
alert( "contains: " + results );