使用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中搜索字符串的常用方法之一。
请问第二双眼睛的帮助,以帮助我发现我在这里做错了什么?
答案 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
}