2016-03-13 48 views
3

使用javascript,我正在運行一組句子&在這些搜索中的多個模式(不區分大小寫的搜索)。javascript - 在一個句子中搜索多個字符串

數組內容是如下(從螢火蟲輸出) -

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中搜索字符串的常用方法之一。

請問我可以請求第二雙眼睛的幫助,以幫助我發現我在這裏做錯了什麼?

+1

'/「平均」的模式|「負荷」 /'不存在...... – elclanrs

+0

Elclanrs - 謝謝你爲這個。我的意圖是搜索「平均」或「負載」。那不是這樣的嗎? – usert4jju7

+1

沒有引號,即使它存在,你會怎麼知道,你的'if/else'條件是以同樣的方式執行嗎? – adeneo

回答

4

您在正則表達式中包含了引號,但沒有出現在字符串中。你只需要/average|load/。你也可以使用/i修飾符來使表達式不區分大小寫,如果你真的不關心它是小寫的,並且刪除空格似乎不能幫助完成任何事情,儘管它可能會導致字符串的誤報如"ave rage"。這可能是你所需要的:

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

謝謝kristjan – usert4jju7

3

使用,而不是比賽:

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

謝謝gabesoft。 – usert4jju7

相關問題