2014-12-30 29 views
2

我正在使用javascript和正則表達式來掃描特定單詞('schiz')的句子,然後將匹配以及查詢單詞前面和後面的5個單詞一起返回。在javascript中使用正則表達式時的不同行爲

但是,我似乎遇到了一個奇怪的情況,其中「new Regexp()」對象的行爲與僅使用普通正則表達式的行爲不同。

在下面的代碼,如果我使用:

reg = /([^\s]+\s){0,5}schiz([^\s]+\s){0,5}/g 

然後返回如預期,但因爲我需要的查詢詞是一個變量,我需要使用「新的正則表達式()」創建我的正則表達式。

reg = RegExp("([^\s]+\s){0,5}"+query+"([^\s]+\s){0,5}","g"); 

哪裏查詢是「schiz」,並沒有給予同樣的結果,任何人都可以解釋爲什麼是這樣? 這裏是整個片段:

var matchItem = "<p><strong>Indications</strong></p>&#10;<p>- Used to treat &#34;resistant schizophrenia&#34; (resistant meaning pt has tried 2 other antipsychotics to little effect)</p>&#10;<p>- Better for refractory schizophrenia than chlorpromazine</p>"; 
    var query = "schiz"; 


    var reg = RegExp("([^\s]+\s){0,5}"+query+"([^\s]+\s){0,5}","g"); 
    //reg = /([^\s]+\s){0,5}schiz([^\s]+\s){0,5}/g 

    var ms = ("" + matchItem).match(reg); 
    if(ms!=null){ 
     ms = ms.join("..."); 
    } 

    return ms; 
+0

你忘了「新」的關鍵字? – slebetman

+2

你需要逃避你的''s。 – SLaks

+0

將'var query ...'和'var reg'行粘貼到控制檯會告訴你(作爲@SLaks指出的),輸出是'/([^ s] + s){0,5} schitz ([^ S] + S){0,5}/g'。 – adamdc78

回答

4

\在字符串中的特殊字符的文字,你要逃避它

"([^\\s]+\\s){0,5}"+query+"([^\\s]+\\s){0,5}" 
相關問題