【发布时间】:2014-04-10 20:34:22
【问题描述】:
我有一组密码复杂性要求,我正在解决这些要求,但在某些特定领域遇到了麻烦。我目前的表达如下:
^(?=(.*\d){2,4})(?=(.*[A-Z]))(?=(.*[a-z])).{8}$
这个表达式(据我所知并已测试)需要一个 8 个字符的密码,其中至少包含一个大写字母、一个小写字母和至少两个数字,但不超过 4 个。
我想实现的其余要求如下: - 包含至少 3 个不同的字母字符 - 不以数字开头 - 不包含特殊字符 - 不以三个相同的字符开头(即 aaa、ccc)。
我将不胜感激任何关于这些的帮助或指导。
【问题讨论】:
-
如果您将其作为“正则表达式练习”进行,那很好,否则,正确的做法是使用带有不同测试的
validate()方法检查所有要求。将来会更容易阅读和维护(以防您决定根据要求更改其中之一)。 -
此外,鉴于如此庞大的限制列表,可能的密码集...有点偏小。
标签: regex passwords expression