巴扎黑2017-04-18 09:09:48
驗證了下, @菩提旭光 的答案是不正確的, 例如hello123
就能匹配, 但并不满足要求. 而且
8個空格也能匹配, 但並不滿足要求, 你也沒辦法把所有特殊符號都加進去.
雖然可以加入(?=[a-zA-Z0-9_#@]+)
來保證密碼不會包含除指定外的特殊符號, 但仍然無法保證它必須有三種符號.
不全是數字/字母/特殊符號, 結果是只要包含2種以上符號即可.
事實上, 這不是一個正規的問題, 參考相似問題
伊谢尔伦2017-04-18 09:09:48
@菩提旭光 的思路是對的,把negative lookahead換成positive lookahead,再稍微調整一下就行了。
(?=.d.)(?=.[a-zA-Z].)(?=.[_#@].).{8,}
迷茫2017-04-18 09:09:48
我覺得這個問題不應該用正規表達式來解決,每種工具都有非常適合使用的場景,我覺得在你這個場景裡面並不適合用正則表達式去解決,用簡單的if語句去判斷,實作簡單,而且可讀性非常好,為什麼一定要用正規表示式呢! ?