我在c sharp中有以下正则表达式来检查提供的密码是否正确
Regex.IsMatch(password, "^.*(?=.{10,})(?=.*[0-9]|[@#$%^&+=])(?=.*[a-z])(?=.*[A-Z]).*$")
Run Code Online (Sandbox Code Playgroud)
为什么上述工作不顺利?
它采取abcdefgh123但不是abcdefgh&+
juh*_*arr 10
就个人而言,我会对长度进行单独检查,然后检查每个角色要求.当事情可以以更易读的方式完成时,我不喜欢使用过于复杂的正则表达式.
if (password.Length > 10 &&
Regex.IsMatch(password, "[a-b]") &&
Regex.IsMatch(password, "[A-Z]") &&
Regex.IsMatch(password, "[0-9@#$%^&+=]"))
{
//Valid password
}
Run Code Online (Sandbox Code Playgroud)