2012-04-10 77 views
8

我要檢查一個正則表達式,如果一個字符串包含特定單詞的JavaScript正則表達式測試。它按預期工作:如果字符串包含特定單詞(可變)

/\bword\b/.test('a long text with the desired word amongst others'); // true 
/\bamong\b/.test('a long text with the desired word amongst others'); // false 

但我需要在變量中檢查的字。使用new RegExp不能正常工作,它總是返回false

var myString = 'a long text with the desired word amongst others'; 

var myWord = 'word'; 
new RegExp('\b' + myWord + '\b').test(myString); // false 

myWord = "among"; 
new RegExp('\b' + myWord + '\b').test(myString); // false 

這裏有什麼問題?

回答

20
var myWord = 'word'; 
new RegExp('\\b' + myWord + '\\b') 

您需要仔細構建一個字符串的正則表達式時逃脫\


這是因爲在\一個字符串開頭的轉義序列,所以它永遠不會使它對正則表達式。通過這樣做\\,你包括字符串字面'\'字符,這使得正則表達式/\bword\b/

+1

+1,看到http://jsfiddle.net/TxQ7c/6/ – 2012-04-10 18:06:54

+1

你發佈你的答案,同時想通了。謝謝。不知道是什麼有這個答案要做到: – Alp 2012-04-10 18:10:55

+0

\ B就不會與所有的語言 – Uri 2016-10-21 17:17:10

相關問題