1

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

我有一个数组中的所有关键字。

例如:

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

这是目前的工作。只是在寻找更好更有效的解决方案。

4

2 回答 2

3

正如@freakish 所说,将它们组合成一个正则表达式更有效(给定一个体面的正则表达式引擎)。当然,这要求匹配项不能重叠,如果需要,必须逐个测试它们。

var match = string.match(new RegExp(keywords.join("|"), "g"));
于 2013-06-05T15:02:11.503 回答
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 );
于 2013-06-05T15:21:58.003 回答