2014-08-27 82 views
1

我已經通過多個示例通過正則表達式驗證密碼,但沒有一個非常適合我正在尋找的內容。我一直在使用試驗和錯誤來建立我自己的,但沒有完全成功。另一個驗證正則表達式的密碼

這裏是正則表達式,到目前爲止是什麼我尋找最接近的匹配:

(?=.*?[a-z]{3,})(?=.*?[A-Z]{3,})(?=.*?[0-9]{2,})[a-zA-Z0-9]{8,24} 

的密碼應該有三個小寫字母和三個大寫字母和兩個數字。密碼長度應該在8到24個字符之間。不尋找特殊字符,只要滿足其他要求,就可以使用特殊字符。

上面的正則表達式與ABCdef12匹配,但不匹配Ad1Be1Cf。我應該如何修改正則表達式,以便它與後面的示例匹配?

回答

1

使用外觀aheads的內容斷言,和一個簡單的正則表達式的長度:

^(?=(.*[a-z]){3})(?=(.*[A-Z]){3})(?=(.*\d){2}).{8,24}$ 

demo

我有理由相信這此最短的正則表達式即會爲你工作。

+0

謝謝你,你的答案確實有最短的正則表達式,它似乎工作。 :)最後,我與我建造的東西並不遙遠...... – KeeperB5 2014-08-27 09:22:42

1
(?=.{8,24}$)(?=.*?[a-z].*?[a-z].*?[a-z])(?=.*?[A-Z].*?[A-Z].*?[A-Z])(?=.*?\d.*?\d)(^.*$) 

您可以使用this.It使用lookahead來測試所有條件。

請參閱演示。

http://regex101.com/r/yX3eB5/9