2016-11-24 62 views
-1

一個簡短的問題:下面這行拋出SyntaxError: nothing to repeatJavaScript錯誤RegEx?

var regexTel = new RegExp('\+[0-9 ]+'); 

工具,比如http://www.regexpal.com/說,該模式能正常工作。

+0

謝謝你,Wiktor。我很難找到它! –

+0

也http://stackoverflow.com/questions/39568096/javascript-regexp-in-replace-not-working和其他一些。 –

回答

2

記住\是在字符串中的特殊以及在正則表達式,所以單\在字符串文本在字符串級別逃脫它後面的內容;所以你的正則表達式實際上並沒有那個\。 (由於\+是沒有意義的字符串常量,它是作爲simpley +處理。)您將需要在另一個反斜槓串級逃吧:

var regexTel = new RegExp('\\+[0-9 ]+'); 

,在JavaScript中,你不必須使用字符串;用正則表達式代替,所以你沒有這個問題:

var regexTel = /\+[0-9 ]+/; 
0

如果你想要的是重複反斜槓\,你需要逃避它:

var regexTel = new RegExp('\\+[0-9 ]+'); 
+0

這似乎是一個手機正則表達式。第一個+是字面的,前綴 – Korcholis

+1

科爾科利斯是對的。 – user6537157

-1

你必須轉義「+」號。在你的正則表達式中,「\」號被識別爲分隔符。 與去程:

var regexTel = new RegExp(/\+[0-9 ]+/); 
0

正如其他人所指出的,它要麼添加斜線傳遞給正則表達式的字符串:

var regexTel = new RegExp('/\+[0-9 ]+/'); 

或者要麼使用更緊湊,消除使用在RegExp對象:

var regexTel = /\+[0-9 ]+/; 
+0

哎! downvoters暗示我爲什麼有一個-2? – Korcholis

-1

試試這個

var regexTel = new RegExp(/\+[0-9 ]+/); 
+1

雖然這可能是一個有效的答案,但您更可能通過解釋代碼的作用和工作原理來幫助他人。僅有代碼的答案往往會得到較少的積極關注,並沒有其他答案那麼有用。 – Aurora0001