HTML密码正则校验:无需数字需特殊字符的匹配规则如何设置
密码校验正则实现方案
规则要求
你需要实现的密码强制校验规则如下:
- 至少包含1个大写字母
- 至少包含1个特殊字符
- 总长度≥6位
- 无强制数字要求
原正则问题说明
你之前使用的正则存在两处不符合需求的问题:
- 包含
(?=.*\d)的强制数字校验规则,因此不含数字的John@doe会被拦截 - 删除数字规则后没有补充特殊字符的校验规则,导致不带特殊字符的密码也能通过校验
正确正则表达式
你可以使用以下正则实现需求:
^(?=.*[A-Z])(?=.*[!@#$%^&*()_+\-=\[\]{}|;':",./<>?]).{6,}$
规则拆解
^:匹配字符串起始位置,避免前缀存在不符合规则的内容(?=.*[A-Z]):正向肯定前瞻,强制要求字符串中至少存在1个大写字母(?=.*[!@#$%^&*()_+\-=\[\]{}|;':",./<>?]):正向肯定前瞻,强制要求字符串中至少存在1个指定范围的特殊字符,你可以根据业务需要调整该方括号内的特殊字符列表.{6,}:匹配任意字符至少6次,满足长度要求$:匹配字符串结束位置,避免后缀存在不符合规则的内容
测试示例
| 测试密码 | 校验结果 | 原因 |
|---|---|---|
| John@doe | 通过 | 符合所有规则 |
| Johndoe | 不通过 | 缺少特殊字符 |
| john@doe | 不通过 | 缺少大写字母 |
| Jo@12 | 不通过 | 长度不足6位 |
| John@123 | 通过 | 数字为可选内容,不影响校验 |
内容的提问来源于stack exchange,提问作者dhaval pawale
相关产品推荐
相关产品推荐

