我想測試一個字符串的格式。此字符串應以+
符號開頭,然後是2位數字,然後是.
符號,然後是10位數字。
/^\+\d{2}\.\d{10}$/.test('+34.2398320186');
這樣,它的工作原理(你可以測試它)。但是當我使用RegExp
時,它表示語法有無效量詞錯誤。怎麼了?
我想測試一個字符串的格式。此字符串應以+
符號開頭,然後是2位數字,然後是.
符號,然後是10位數字。
/^\+\d{2}\.\d{10}$/.test('+34.2398320186');
這樣,它的工作原理(你可以測試它)。但是當我使用RegExp
時,它表示語法有無效量詞錯誤。怎麼了?
你必須逃離\
與第二\\
new RegExp('^\\+\\d{2}\\.\\d{10}$'); // should work
我會從http://www.regular-expressions.info/javascript.html
添加的建議,我建議你不要用文字 字符串中使用正則表達式的構造,因爲在字面字符串中,反斜槓必須被轉義。
由於您將正則表達式指定爲字符串,因此您還需要轉義'\',因爲這也是字符串轉義字符。所以,你會想:
new RegExp('^\\+\\d{2}\\.\\d{10}$');
你可以試試這個,如果你不想逃避反斜槓
var regex = /^\+\d{2}\.\d{10}$/
new RegExp(regex).test('+34.2398320186');
如果你想使用字符串作爲參數去正則表達式,那麼你必須轉義反斜線。
偉大的解決方案。謝謝。 –
考慮到你已經有了第1行的正則表達式,爲什麼你應該使用「構造函數」? – xanatos
@xanatos我不確定OP在做什麼,我只是指出,當你使用特定的構造函數時它工作正常。 – user883499