2010-07-02 62 views
0

我想用javascript正則表達式做一些匹配,並且發現了一個非常不尋常的行爲,我希望有人能解釋。javascript d正則表達式出乎意料的行爲

我試圖匹配的字符串是:「0(IR)」和代碼塊是

finalRegEx = new RegExp("[0-9]"); 
match = finalRegEx.exec(str); 

不同之處在於,當我把「\ d」而不是「[0-9]」,它沒有找到匹配。我真的很困惑。

回答

4

如果使用正則表達式"\d"打造的正則表達式時,"\d"將導致剛剛"d"。無論是使用兩個反斜槓逃脫像"\\d"斜線或簡單地使用regular expression literals /…/代替:

match = /\d/.exec(str) 
3

你需要,因爲你使用的構造函數來逃避它,否則它的字面匹配d

new RegExp('\\d').test('1') 

new RegExp應該只用於動態匹配。否則,使用文字:

var foo = /\d/; 
foo.test(1) 
+0

你通過動態匹配是什麼意思?匹配變量的內容? – lincolnk 2010-07-02 18:00:18

+0

動態地創建正則表達式而不是硬編碼它,比如在循環中,爲每個變化的變量創建一個新的RegExp對象。 – 2010-07-02 18:04:15

0

你可能需要轉義反斜線:finalRegEx = new RegExp("\\d");

相關問題