要求
密碼長度 6-16 位,包含至少一個特殊字符,一個數字,一個大寫字母和一個小寫字母。
正則表達式
(?=^.{6,16}$)(?=(?:.*?\d){1})(?=.*[a-z])(?=(?:.*?[A-Z]){1})(?=(?:.*?[`·~!@#$%^&*()_+}{|:;'",<.>/?\=\[\]\-\\]){1})(?!.*\s)[0-9a-zA-Z`·~!@#$%^&*()_+}{|:;'",<.>/?\=\[\]\-\\]*$
解釋
| 規則 | 解釋 |
|---|---|
| (?=^.{6,16}$) | 密碼長度6-16,自己改變數字可以調節 |
| (?=(?:.?[`·~!@#$%^&()_+}{:;'",<.>/?=\[\]\-\]){1}) | 至少一個特殊字符 |
| (?=(?:.*?\d){1}) | 至少一個數字 |
| (?=.*[a-z]) | a-z的小寫字母 |
| (?=(?:.*?[A-Z]){1}) | 至少一個大寫字母 |
一些坑
-
在做特殊字符處理這塊,因為涉及到有些字符比如
= [ ] - \這四個,需要在前面加\進行轉義,才能正常正則識別出來。 -
特殊字符匹配,后面這段必須也包含前面的匹配代碼,即兩段 ``·~!@#$%^&*()_+}{|:;'",<.>/?=[]-\` 都相同:
(?=(?:.*?[`·~!@#$%^&*()_+}{|:;'",<.>/?\=\[\]\-\\]){1})(?!.*\s)[0-9a-zA-Z`·~!@#$%^&*()_+}{|:;'",<.>/?\=\[\]\-\\]*$ -
只支持英文狀態下的特殊字符,因為發現中文的
—和英文的-是兩個字符。
正則表達式測試網站
- regexr(強烈推薦這個)
- regexpal
- 在線工具
- 菜鳥工具
- 6個在線正則表達式工具
