正则表达式之密码验证
要求
密码长度 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个在线正则表达式工具
参考
最怕一生碌碌无为,还说平凡难能可贵。

浙公网安备 33010602011771号