2015-07-13 41 views
1

這裏是我的正則表達式:未捕獲的SyntaxError:無效的正則表達式:沒有重複

var newRegexp= new RegExp('\[\/\[\]\^\$\|\*\+\(\)\\[email protected]#%&\-_+=\{}£<>]{1,}', 'g'); 

我得到Uncaught SyntaxError: Invalid regular expression: Nothing to repeat錯誤有了它,我想不通爲什麼。我在RegExr上使用它,它工作正常。任何幫助表示讚賞。

+0

什麼是你正在尋找 –

+0

我需要檢查的特殊字符的正則表達式html中的輸入字段。 onkeydown – mattz330

+0

[類似這樣](http://stackoverflow.com/questions/6053541/regex-every-non-alphanumeric-character-except-white-space-or-colon)可能更容易維護。 – Cerbrus

回答

3

你有一個逃脫的第一個[,應該開始一個範圍。將它縮小。

還介意它是更好地使用文字符號(我也建議刪除不必要的逃避,因爲它使正則表達式過於不可讀):

var newRegexp = /[\/\[\]^$|*+()\\[email protected]#%&_+={}£<>-]+/g; 

demo

另外請注意,我換成{1,}+,因爲它更短,並且意味着絕對相同。如果我們在字符類的末尾加上連字符,我們不必逃避它。

+0

Pet peeve:在'='符號之前沒有空格;-)仍然,很好的答案,修復的不僅僅是眼前的問題。 +1 – Cerbrus

+1

我增加了更好的美感的空間:) –

1

你需要加倍逃避\一樣,也在裏面[]就沒有必要逃避大部分的正則表達式特殊字符

new RegExp('[/\\[\\]^$|*+()[email protected]#%&\\-_+={}£<>]{1,}', 'g'); 
相關問題