我想用javascript正則表達式做一些匹配,並且發現了一個非常不尋常的行爲,我希望有人能解釋。javascript d正則表達式出乎意料的行爲
我試圖匹配的字符串是:「0(IR)」和代碼塊是
finalRegEx = new RegExp("[0-9]");
match = finalRegEx.exec(str);
不同之處在於,當我把「\ d」而不是「[0-9]」,它沒有找到匹配。我真的很困惑。
我想用javascript正則表達式做一些匹配,並且發現了一個非常不尋常的行爲,我希望有人能解釋。javascript d正則表達式出乎意料的行爲
我試圖匹配的字符串是:「0(IR)」和代碼塊是
finalRegEx = new RegExp("[0-9]");
match = finalRegEx.exec(str);
不同之處在於,當我把「\ d」而不是「[0-9]」,它沒有找到匹配。我真的很困惑。
如果使用正則表達式與"\d"
打造的正則表達式時,"\d"
將導致剛剛"d"
。無論是使用兩個反斜槓逃脫像"\\d"
斜線或簡單地使用regular expression literals /…/
代替:
match = /\d/.exec(str)
你需要,因爲你使用的構造函數來逃避它,否則它的字面匹配d
:
new RegExp('\\d').test('1')
new RegExp
應該只用於動態匹配。否則,使用文字:
var foo = /\d/;
foo.test(1)
你可能需要轉義反斜線:finalRegEx = new RegExp("\\d");
你通過動態匹配是什麼意思?匹配變量的內容? – lincolnk 2010-07-02 18:00:18
動態地創建正則表達式而不是硬編碼它,比如在循環中,爲每個變化的變量創建一個新的RegExp對象。 – 2010-07-02 18:04:15