2016-07-20 60 views
0

當至少有1個數字或1個特殊字符且總長度爲8或更大時,模式應匹配。正則表達式可選組

它部分工作,但只有特殊字符或數字值在開頭。

到目前爲止,我有:

/([\d]|[[email protected]#$%^&*()_+])([a-z]).{8,}/ 
+1

只要你知道,'[AZ]'還包含字符''[\] ^'_'' –

+0

好點,謝謝你將它放到az。 – Adrian

+0

[正則表達式的密碼必須包含至少8個字符,至少1個數字以及大小寫字母和特殊字符](http://stackoverflow.com/questions/19605150/regex-for-password-must-至少包含8個字符,最少1個數字和機器人) –

回答

3

爲什麼一個過於複雜RegExp?當然這是可能的,但是你必須指定符合這些要求的可能字符組合的每個排列組合。只是這樣做:

if (/[\[email protected]#$%^&*()_+]/.test(string) && string.length >= 8) { ... } 
+0

正則表達式也可以是:'/ [\ d!@#$%^&*()_ +] /' – rgthree

+0

沒錯,我會解決這個問題的。我剛剛複製了他的正則表達式 –

0

你倒着做的,不要試圖積極配合特殊字符,限制人們可以/必須使用的。取而代之的是,比賽的東西你認爲是並不特殊,如:

pw.length >= 8 && /\d/.test(pw) && /[^a-z\d\x20]/i.test(pw) 

比檢查長度,一個數字的存在,那麼這不是字母,也不是空間中的人物的存在(在i標誌使得情況不敏感的)。你也可能要禁止的空間,並且通常不能夠在鍵盤上鍵入其他控制字符(阻止人們在垃圾粘貼):

&& !/[\x00-\x20]/.test(pw)