javascript - 在一个句子中搜索多个字符串

时间:2016-03-13 22:40:20

标签: javascript

使用javascript,我正在运行一系列句子&在每个模式中搜索多个模式(不区分大小写的搜索)。

数组内容如下(来自firebug的输出) -

var names=[
    "SUBSET FULL ACT # - TOTAL",
    "SUBSET  ACT ACTIV - TOTAL",
    "SUBSET ACT ACTIV - AVERAGE 1th LOAD",
    "SUBSET ACT ACTIV - AVERAGE",
    "SUBSET ACT ACTIV - AVERAGE 2th LOAD",
    "SUBSET ACT ACTIV - AVERAGE 3th LOAD",
    "SUBSET ACT ACTIV - AVERAGE4th LOAD",
    "SUBSET ACT ACTIV - MAX",
];

这是我迄今为止所尝试的内容。

for (j = 0; j < names.length; ++j) {
    var searchRes = names[j].replace(/\s/g, "").toLowerCase().search(/'average'|'load'/);
    if (searchRes === -1) {
        doThis = "facr1";
    } else {
        doThis = "facr2";
    }

虽然模式存在,但搜索结果始终为-1。我已经在互联网上查了一下发现这是在javascript中搜索字符串的常用方法之一。

请问第二双眼睛的帮助,以帮助我发现我在这里做错了什么?

2 个答案:

答案 0 :(得分:4)

您在正则表达式中包含了引号,但没有出现在字符串中。你想要/average|load/。你也可以使用/i修饰符使表达式不区分大小写,如果你实际上并不关心它是低级的,并且删除空格似乎没有帮助完成任何事情,尽管它可能导致错误像"ave rage"这样的字符串是正数。这可能就是你所需要的:

var searchRes = names[j].search(/average|load/i);

答案 1 :(得分:3)

改为使用匹配:

var searchRes = names[j].toLowerCase().match(/average|load/);
if (searchRes) {
   // match
} else {
   // doesn't match 
}