一個簡短的問題:下面這行拋出SyntaxError: nothing to repeat
JavaScript錯誤RegEx?
var regexTel = new RegExp('\+[0-9 ]+');
工具,比如http://www.regexpal.com/說,該模式能正常工作。
一個簡短的問題:下面這行拋出SyntaxError: nothing to repeat
JavaScript錯誤RegEx?
var regexTel = new RegExp('\+[0-9 ]+');
工具,比如http://www.regexpal.com/說,該模式能正常工作。
記住\
是在字符串中的特殊以及在正則表達式,所以單\
在字符串文本在字符串級別逃脫它後面的內容;所以你的正則表達式實際上並沒有那個\
。 (由於\+
是沒有意義的字符串常量,它是作爲simpley +
處理。)您將需要在另一個反斜槓串級逃吧:
var regexTel = new RegExp('\\+[0-9 ]+');
但,在JavaScript中,你不必須使用字符串;用正則表達式代替,所以你沒有這個問題:
var regexTel = /\+[0-9 ]+/;
如果你想要的是重複反斜槓\,你需要逃避它:
var regexTel = new RegExp('\\+[0-9 ]+');
這似乎是一個手機正則表達式。第一個+是字面的,前綴 – Korcholis
科爾科利斯是對的。 – user6537157
你必須轉義「+」號。在你的正則表達式中,「\」號被識別爲分隔符。 與去程:
var regexTel = new RegExp(/\+[0-9 ]+/);
正如其他人所指出的,它要麼添加斜線傳遞給正則表達式的字符串:
var regexTel = new RegExp('/\+[0-9 ]+/');
或者要麼使用更緊湊,消除使用在RegExp
對象:
var regexTel = /\+[0-9 ]+/;
哎! downvoters暗示我爲什麼有一個-2? – Korcholis
試試這個
var regexTel = new RegExp(/\+[0-9 ]+/);
雖然這可能是一個有效的答案,但您更可能通過解釋代碼的作用和工作原理來幫助他人。僅有代碼的答案往往會得到較少的積極關注,並沒有其他答案那麼有用。 – Aurora0001
謝謝你,Wiktor。我很難找到它! –
也http://stackoverflow.com/questions/39568096/javascript-regexp-in-replace-not-working和其他一些。 –