我正在编写用于在 Javascript 中验证密码的正则表达式。限制条件是:
- 密码必须包含至少一个大写字符
- 密码必须至少包含一个特殊字符
经过反复试验和在网上进行一些搜索,我发现这是可行的:
/(?=.*[A-Z]+)(?=.*[!@#\$%]+)/
有人可以解释一下这个表达式中提到大写字母和特殊字符可以按任何顺序出现的部分吗?
我认为这会更好:
/(?=.*[A-Z])(?=.*[!@#\$%])/
环视不消耗字符,因此第二次环视的开始与第一次相同。这使得对这两个字符的检查彼此独立。您可以交换它们,生成的正则表达式仍然与此相同。
以下正则表达式(由 Gumbo 建议)稍微更有效,因为它避免了不必要的回溯:
/(?=[^A-Z]*[A-Z])(?=[^!@#\$%]*[!@#\$%])/
不过,对于通常长度的密码,时间差可能不容易测量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)