密码强度的正则表达式,第一个字符有附加规则
Regex for Password strength with additional rules on first character
我需要一个密码强度的正则表达式,它有 3 个不同的规则:
- 4 组中至少有 3 组(小写、大写、数字、特殊字符)
- 最少 8 个字符
- 第一个字符不是“{”(实施此功能的某些产品限制)
到目前为止,我有一个实现前两个规则的正则表达式。此外,我能够扩展正则表达式以限制第一个字符。然而,我目前的问题是,当我限制第一个字符时,它不会被考虑到第一条规则。例如。以下密码不通过:$MyPassword
初始规则:^((?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)|(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^a-zA-Z0-9])|(?=.*?[A-Z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])|(?=.*?[a-z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])).{8,}$
扩展规则:^[^{]{1}((?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)|(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^a-zA-Z0-9])|(?=.*?[A-Z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])|(?=.*?[a-z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])).{8,}$
由于我对正则表达式仍然有些迷惑,我希望能提供包含一些解释的解决方案。
提前致谢!
注意:我将在 javascript 中使用此正则表达式。
差不多了,你应该在前面的 {
上放置一个否定断言,而不是一个不匹配的字符。这使您可以输入任何字符,并且不计入会破坏所有规则的断言。
这将是您的正则表达式:
^(?=[^\{])((?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)|(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^a-zA-Z0-9])|(?=.*?[A-Z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])|(?=.*?[a-z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])).{8,}$
如果您想知道自己在做什么,请查看解释断言的 this article。这将使 (?=
的用法更加清晰。
我需要一个密码强度的正则表达式,它有 3 个不同的规则:
- 4 组中至少有 3 组(小写、大写、数字、特殊字符)
- 最少 8 个字符
- 第一个字符不是“{”(实施此功能的某些产品限制)
到目前为止,我有一个实现前两个规则的正则表达式。此外,我能够扩展正则表达式以限制第一个字符。然而,我目前的问题是,当我限制第一个字符时,它不会被考虑到第一条规则。例如。以下密码不通过:$MyPassword
初始规则:^((?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)|(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^a-zA-Z0-9])|(?=.*?[A-Z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])|(?=.*?[a-z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])).{8,}$
扩展规则:^[^{]{1}((?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)|(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^a-zA-Z0-9])|(?=.*?[A-Z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])|(?=.*?[a-z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])).{8,}$
由于我对正则表达式仍然有些迷惑,我希望能提供包含一些解释的解决方案。
提前致谢!
注意:我将在 javascript 中使用此正则表达式。
差不多了,你应该在前面的 {
上放置一个否定断言,而不是一个不匹配的字符。这使您可以输入任何字符,并且不计入会破坏所有规则的断言。
这将是您的正则表达式:
^(?=[^\{])((?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)|(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^a-zA-Z0-9])|(?=.*?[A-Z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])|(?=.*?[a-z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])).{8,}$
如果您想知道自己在做什么,请查看解释断言的 this article。这将使 (?=
的用法更加清晰。