字符串正则表达式不起作用

chu*_*ese 4 c# regex

我在c sharp中有以下正则表达式来检查提供的密码是否正确

  • 超过10个字符
  • 应该至少有一个小写字符
  • 应该至少有一个大写字符
  • 应该有一个数字或一个特殊字符

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)