正則表示式之密碼驗證
阿新 • • 發佈:2020-09-15
要求
密碼長度 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個線上正則表示式工具