2012-05-24 46 views
4
var str = "1405199610"; 
var re = new RegExp("\d{10}"); 
var myArray = re.test(str); 

myArray false!正則表達式.test總是返回false

這怎麼可能?我使用在線正則表達式檢查器對其進行了測試,檢查結果正常。當我在控制檯或jsfiddler中嘗試它時,它不起作用。我錯過了什麼嗎?

+0

如果您在Chrome控制檯中鍵入'new RegExp(「\ d {10}」)',您將看到您的表達式變爲'/ d {10} /'。爲什麼?因爲''''是字符串中的轉義字符,'\ d'是無效的轉義序列,所以它變成'd'。如果你想創建一個文字''''''''''''''''''''''''' –

+0

'myArray'對於一個包含布爾值的變量來說可能是一個令人誤解的名字! –

回答

12
var re = new RegExp("\\d{10}"); 

你需要躲避\當通過RegExp()對象創建的正則表達式

MDN reference

...還不要忘了逃走\本身,而使用新的RegExp(」模式「)符號,因爲\也是字符串中的轉義字符。

+0

謝謝你們。我真的需要更多有關這些事情的經驗。他們往往很混亂! –

相關問題