Regex 密码验证的Reg Ex失败

Regex 密码验证的Reg Ex失败,regex,Regex,嗨,我的密码应该包含 1. minimum 8 characters 2. minimum 1 special character 3. minimum 1 number 我正在使用以下注册表项: /^.*(?=.{8,})(?=.*d)(?=.*[A-z])(?=.*[!@#$%^&*? ]).*$/ 但这不接受字符串AAAA2@AAAA长度为8个字符,有一个特殊字符@和一个数字2。我对正则表达式的了解很少。你能告诉我这个表达有什么问题吗 您可以使用: ^(?=.*\d)(?=.*

嗨,我的密码应该包含

1. minimum 8 characters
2. minimum 1 special character
3. minimum 1 number
我正在使用以下注册表项:

/^.*(?=.{8,})(?=.*d)(?=.*[A-z])(?=.*[!@#$%^&*? ]).*$/
但这不接受字符串
AAAA2@AAAA
长度为8个字符,有一个特殊字符@和一个数字2。我对正则表达式的了解很少。你能告诉我这个表达有什么问题吗

您可以使用:

^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&*? ])[!@#$%^&*? a-zA-Z\d]{8,}$
[A-z]
不正确,可能会匹配ASCII 65-122范围内的更多字符,如
[
]
,`等

您可以使用:

^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&*? ])[!@#$%^&*? a-zA-Z\d]{8,}$
[A-z]
不正确,可能会匹配ASCII 65-122范围内的更多字符,如
[
]
,`等


字符串不被接受的原因是您忘记了带
d
的斜杠,并且正则表达式要求字母
d
位于字符串内部。修复是

^(?=.{8,})(?=.*\d)(?=.*[A-Z])(?=.*[!@#$%^&*? ]).*$
 ^             ^^
将其与
i
修饰符一起使用

[A-z]
问题是一个问题。此外,应该删除初始的
*
,否则正则表达式的某些部分将无法正确验证

说到优化:长度检查几乎总是可以移到最后:

^(?=.*\d)(?=.*[A-Z])(?=.*[!@#$%^&*? ]).{8,}$
请参阅(请再次注意
i
modifier)

另见:

如果必须检查
n
条件,则您的模式最多只需要包含
n-1
lookaheads。通常,您甚至可以将多个条件组合成一个前瞻

只要您的条件满足上述条件(1)最少8个字符,2)最少1个特殊字符,3)最少1个数字)-没有英文字母要求-您甚至可以使用

^(?=.*\d)(?=.*[!@#$%^&*? ]).{8,}$

字符串不被接受的原因是您忘记了带
d
的斜杠,并且正则表达式要求字母
d
位于字符串内部。修复是

^(?=.{8,})(?=.*\d)(?=.*[A-Z])(?=.*[!@#$%^&*? ]).*$
 ^             ^^
将其与
i
修饰符一起使用

[A-z]
问题是一个问题。此外,应该删除初始的
*
,否则正则表达式的某些部分将无法正确验证

说到优化:长度检查几乎总是可以移到最后:

^(?=.*\d)(?=.*[A-Z])(?=.*[!@#$%^&*? ]).{8,}$
请参阅(请再次注意
i
modifier)

另见:

如果必须检查
n
条件,则您的模式最多只需要包含
n-1
lookaheads。通常,您甚至可以将多个条件组合成一个前瞻

只要您的条件满足上述条件(1)最少8个字符,2)最少1个特殊字符,3)最少1个数字)-没有英文字母要求-您甚至可以使用

^(?=.*\d)(?=.*[!@#$%^&*? ]).{8,}$

1.对于
aaaaaa 1,此表达式失败
ABCabc1
或任何不带字符的字符串
d
。2.在我的要求中,用户只能输入不带大写字母的小写字母,但此表达式要求字符串同时包含一个小写字母和大写字母。这实际上是一个复制/粘贴错误<代码>d
应该是数字的
\d
。请参见更新的now.1。此表达式对于
aaaaaaaa 1失败
ABCabc1
或任何不带字符的字符串
d
。2.在我的要求中,用户只能输入不带大写字母的小写字母,但此表达式要求字符串同时包含一个小写字母和大写字母。这实际上是一个复制/粘贴错误<代码>d
应该是数字的
\d
。请立即查看更新的。嗯,这也将匹配
aaaaaa2@[]AA
,因为
[
]
不在提供的字符类中,所以问题不清楚这是否正确。嗯,这也将匹配
AAAA2@[]AA
,问题不清楚这是否正确,因为
[
]
不在提供的字符类中。