为何含括号的特定密码无法通过正则表达式验证?
密码验证失败原因及修复方案
问题根源
你的密码ogJ((48HzpZI)包含(和)特殊字符,但当前使用的正则表达式未将括号纳入允许的特殊字符范围:
- 正则的正向预查规则
(?=.*[@$!%*?&])仅要求包含@$!%*?&中的一种特殊字符 - 正则末尾的字符集
[A-Za-z\d@$!%*?&]+也只允许@$!%*?&这些特殊字符
由于括号不在允许列表内,导致符合长度和其他字符要求的密码仍验证失败。
修复方案
将(和)添加到正则的特殊字符集合中即可,修改后的正则如下:
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&()])[A-Za-z\d@$!%*?&()]+$/
把验证配置里的regex字段替换为上述正则,包含括号的密码就能正常通过验证。
如果后续需要支持其他特殊字符(如_、-等),只需同步添加到正则的两个特殊字符位置(正向预查规则和末尾字符集)即可。
内容的提问来源于stack exchange,提问作者BuildWithGagan
相关产品推荐
相关产品推荐

