Javascript 如何编写正则表达式使密码与规则匹配
我正在尝试编写正则表达式以使密码与以下规则匹配 最小长度-8个字符,如果包含数字和小写字母,或15个字符和任意字符组合 这是我的正则表达式Javascript 如何编写正则表达式使密码与规则匹配,javascript,regex,passwords,Javascript,Regex,Passwords,我正在尝试编写正则表达式以使密码与以下规则匹配 最小长度-8个字符,如果包含数字和小写字母,或15个字符和任意字符组合 这是我的正则表达式 ^(?=.*\d[a-z]){8,}|([a-zA-Z0-9]{15,})$ 预期结果: 2232DDS-正确 ddds2222-正确 实际结果: 2232DDS-正确 ddds2222-不正确 你能帮我找个问题吗?问题有两个: 锚只影响它们旁边的备选方案 (?=.*\d[a-z])前瞻只需要按此顺序显示一个数字和一个小写,如果先有一个字母,然后是一个数字
^(?=.*\d[a-z]){8,}|([a-zA-Z0-9]{15,})$
预期结果:
2232DDS
-正确
ddds2222
-正确
实际结果:
2232DDS
-正确
ddds2222
-不正确
你能帮我找个问题吗?问题有两个:
- 锚只影响它们旁边的备选方案
前瞻只需要按此顺序显示一个数字和一个小写,如果先有一个字母,然后是一个数字,它将不起作用(?=.*\d[a-z])
/^(?:(?=.*\d)(?=.*[a-z]).{8,}|[a-zA-Z0-9]{15,})$/
^^^|-----------------| ^ ^
看
如果您想提高效率并遵循最佳实践,请使用
/^(?:(?=\D*\d)(?=[^a-z]*[a-z]).{8,}|[a-zA-Z0-9]{15,})$/
详细信息
-字符串的开头^
-非捕获组启动(?:
-至少1位(?=\D*\D)
-至少1个小写字母(?=[^a-z]*[a-z])
-除换行符以外的任何8个或更多字符{8,}
-或|
-15个或更多字母数字字符[a-zA-Z0-9]{15,}
-非捕获组结束)
-字符串结束$
- 小写
(?=.[a-z])
- 大写字母
(?=.*[A-Z])
- 数字
(?=.*\d)
- 符号
(?=.[!@\$%\^&])
(?=.{8,})
您的正则表达式应该是:(?=.[a-z])(?=.*\d)(?=.{8,})|(?=.{15,})
希望这有帮助