要求:
- 密碼長度最少8位
- 大寫字母,小寫字母,數字,特殊符號必須四選三
首先給出全部四種的匹配表達式:
[a-zA-Z0-9\W_]{8,}
其中\W
匹配任意不是字母,數字,下划線,漢字的字符。
然后使用排除法,排除其中只選一種或只選兩種的情況,剩下的就是選了三種的情況了。
有:
大寫+小寫,大寫+數字,大寫+特殊符號,小寫+數字,小寫+特殊符號,數字+特殊符號。共這6種組合。
最后使用環視-正向否定匹配 (?!...)
組合起來,就得到最終需要的表達式:
^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_]+$)(?![a-z0-9]+$)(?![a-z\W_]+$)(?![0-9\W_]+$)[a-zA-Z0-9\W_]{8,}$