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> <p>- Used to treat "resistant schizophrenia" (resistant meaning pt has tried 2 other antipsychotics to little effect)</p> <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;
你忘了「新」的關鍵字? – slebetman
你需要逃避你的''s。 – SLaks
將'var query ...'和'var reg'行粘貼到控制檯會告訴你(作爲@SLaks指出的),輸出是'/([^ s] + s){0,5} schitz ([^ S] + S){0,5}/g'。 – adamdc78