2011-10-05 54 views
3

我想測試一個字符串的格式。此字符串應以+符號開頭,然後是2位數字,然後是.符號,然後是10位數字。

/^\+\d{2}\.\d{10}$/.test('+34.2398320186'); 

這樣,它的工作原理(你可以測試它)。但是當我使用RegExp時,它表示語法有無效量詞錯誤。怎麼了?

回答

9

你必須逃離\與第二\\

new RegExp('^\\+\\d{2}\\.\\d{10}$'); // should work 

我會從http://www.regular-expressions.info/javascript.html

添加的建議,我建議你不要用文字 字符串中使用正則表達式的構造,因爲在字面字符串中,反斜槓必須被轉義。

4

由於您將正則表達式指定爲字符串,因此您還需要轉義'\',因爲這也是字符串轉義字符。所以,你會想:

new RegExp('^\\+\\d{2}\\.\\d{10}$'); 
4

你可以試試這個,如果你不想逃避反斜槓

var regex = /^\+\d{2}\.\d{10}$/ 
new RegExp(regex).test('+34.2398320186'); 

如果你想使用字符串作爲參數去正則表達式,那麼你必須轉義反斜線。

+0

偉大的解決方案。謝謝。 –

+0

考慮到你已經有了第1行的正則表達式,爲什麼你應該使用「構造函數」? – xanatos

+0

@xanatos我不確定OP在做什麼,我只是指出,當你使用特定的構造函數時它工作正常。 – user883499

相關問題