正则表达式帮助密码

时间:2013-02-28 12:19:32

标签: javascript regex passwords

我想使用以下规则强制使用强密码:
- 一个小写的字母 - 一个大写的字母 - 一个号码 - 一个特殊字符

通过互联网搜索,我想出了这个:

^(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[1-9])[a-zA-Z1-9]{8,}$

但它并没有阻止在rubular.com上 一些帮助?

1 个答案:

答案 0 :(得分:4)

试试这个:

^(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9]).{8,}$

<强>解释

(?=.*[a-z])密码必须在某处包含小写字母。

(?=.*[A-Z])密码必须在某处包含大写字母。

(?=.*[!@#$&*])密码必须包含符号。

(?=.*[0-9])密码必须包含某个位数。

所有这些都是前瞻性的,这意味着每次测试都没有在比赛中实际包含它或向前移动比赛位置。因此,在所有这些测试之后,就匹配而言,我们仍然处于字符串的开头。

.{8,}整个密码必须包含8个或更多字符。 (^$锚定到字符串的开头和结尾,因此它们确保匹配包含整个字符串。)

原始问题是[a-zA-Z1-9]{8,}。这部分意味着整个密码必须由八个或更多字母和数字组成。这与先前要求存在特殊字符的要求相矛盾。此外,原作并没有将数字视为零,我认为这很愚蠢。