javascript:在字符串中查找所有匹配的关键字

时间:2013-06-05 14:55:00

标签: javascript performance node.js

我正在尝试解析大量文本以找到所有匹配的关键字。

我在数组中包含所有关键字。

例如:

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);
}

现在这种做法很有用。只是寻找更好,更有效的解决方案。

2 个答案:

答案 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 );