【发布时间】:2019-12-19 15:29:19
【问题描述】:
我正在尝试使用以下规则创建用于密码验证的正则表达式
- 至少一个大写字母
- 至少一个小写字母
- 至少一位数
- 允许的特殊字符中至少有一个
- 最少 8 个字符,最多 30 个字符
创建正则表达式
^(?!.* )(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@"#%$&])(?=.{8,30})
此表达式适用于大多数情况,但列表中不允许的特殊字符除外
例如Password@*123 显示为有效,即使 * 不在允许列表中。这是因为它与允许列表中的其他特殊字符一起出现。如果有任何特殊字符超出允许的列表,则表达式不应匹配。
var pwd = "Password@*123";
var pwdRegex = /^(?!.* )(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@"#%$&])(?=.{8,30})/;
var result = pwdRegex .test(pwd);
密码@*123 - 即使 * 不在允许列表中也显示为匹配
【问题讨论】:
标签: regex