【发布时间】:2016-08-29 21:24:06
【问题描述】:
我需要使用以下规则检查密码字符串:
-
只允许使用小写字母、大写字母、数字和一些特殊字符(见下文)。
-
最少 8 个字符,最多 16 个字符。
-
密码必须包含以下四个组中的三个组中的至少一个字符:
- 小写字母
- 大写字母
- 数字字符
- 特殊字符 (!@#$%&/=?_.,:;-)
为了实现这个目标,我做了两个验证。简单的是第一步,检查允许的字符和长度:
^[a-zA-Z0-9!@\#$%&/=?_.,:;\-]{8,16}$
第二个有点复杂,但感谢Stackoverflow answer:
^((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!@\#$%&/=?_.,:;\-])|(?=.*[a-z])(?=.*[0-9])(?=.*[!@\#$%&/=?_.,:;\-])|(?=.*[A-Z])(?=.*[0-9])(?=.*[!@\#$%&/=?_.,:;\-])).{8,16}$
我认为两步解决方案可能既清晰又简单......但是...... 有没有办法合并两个正则表达式?
我想在 Java、JavaScript 和 Lua 上应用该解决方案。
【问题讨论】:
标签: javascript java regex passwords