用正则表达式构造匹配:
密码必须由数字、字符、特殊字符三种同时存在组成;
密码长度不能少于8个字符;
学习是最好的投资!
雷雷
驗證了下, @菩提旭光 的答案是不正確的, 例如hello123就能匹配, 但并不满足要求. 而且 8個空格也能匹配, 但並不滿足要求, 你也沒辦法把所有特殊符號都加進去.
hello123
雖然可以加入(?=[a-zA-Z0-9_#@]+)來保證密碼不會包含除指定外的特殊符號, 但仍然無法保證它必須有三種符號.
(?=[a-zA-Z0-9_#@]+)
不全是數字/字母/特殊符號, 結果是只要包含2種以上符號即可.
事實上, 這不是一個正規的問題, 參考相似問題
把6種情況都列一遍
@菩提旭光 的思路是對的,把negative lookahead換成positive lookahead,再稍微調整一下就行了。 (?=.d.)(?=.[a-zA-Z].)(?=.[_#@].).{8,}
我覺得這個問題不應該用正規表達式來解決,每種工具都有非常適合使用的場景,我覺得在你這個場景裡面並不適合用正則表達式去解決,用簡單的if語句去判斷,實作簡單,而且可讀性非常好,為什麼一定要用正規表示式呢! ?
雷雷
驗證了下, @菩提旭光 的答案是不正確的, 例如
8個空格也能匹配, 但並不滿足要求, 你也沒辦法把所有特殊符號都加進去.
hello123
就能匹配, 但并不满足要求. 而且雖然可以加入
(?=[a-zA-Z0-9_#@]+)
來保證密碼不會包含除指定外的特殊符號, 但仍然無法保證它必須有三種符號.不全是數字/字母/特殊符號, 結果是只要包含2種以上符號即可.
事實上, 這不是一個正規的問題, 參考相似問題
把6種情況都列一遍
@菩提旭光 的思路是對的,把negative lookahead換成positive lookahead,再稍微調整一下就行了。
(?=.d.)(?=.[a-zA-Z].)(?=.[_#@].).{8,}
我覺得這個問題不應該用正規表達式來解決,每種工具都有非常適合使用的場景,我覺得在你這個場景裡面並不適合用正則表達式去解決,用簡單的if語句去判斷,實作簡單,而且可讀性非常好,為什麼一定要用正規表示式呢! ?