我想使用以下规则强制使用强密码:
- 一个小写的字母
- 一个大写的字母
- 一个号码
- 一个特殊字符
^(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[1-9])[a-zA-Z1-9]{8,}$
但它并没有阻止在rubular.com上 一些帮助?
答案 0 :(得分:4)
试试这个:
^(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9]).{8,}$
<强>解释强>
(?=.*[a-z])
密码必须在某处包含小写字母。
(?=.*[A-Z])
密码必须在某处包含大写字母。
(?=.*[!@#$&*])
密码必须包含符号。
(?=.*[0-9])
密码必须包含某个位数。
所有这些都是前瞻性的,这意味着每次测试都没有在比赛中实际包含它或向前移动比赛位置。因此,在所有这些测试之后,就匹配而言,我们仍然处于字符串的开头。
.{8,}
整个密码必须包含8个或更多字符。 (^
和$
锚定到字符串的开头和结尾,因此它们确保匹配包含整个字符串。)
原始问题是[a-zA-Z1-9]{8,}
。这部分意味着整个密码必须由八个或更多字母和数字组成。这与先前要求存在特殊字符的要求相矛盾。此外,原作并没有将数字视为零,我认为这很愚蠢。