C# 用于验证密码的正则表达式

C# 用于验证密码的正则表达式,c#,regex,C#,Regex,我需要使用正则表达式验证密码 下面是验证标准 密码应包含4种字符类型中的任意3种: 小写字母(a、b、c、d、…、y、z) 大写字母(A、B、C、D、…、Y、Z) 数字(0,1,2,3,4,5,6,7,8,9) 特殊字符($、&、%、!、#、@)” 我已经想出了下面的正则表达式,但问题是它只验证到前9个字符,并允许字后的任何字符 ^(?=.{9,})((?=.*\d)(?=.*[a-z])(?=.*[A-Z])|(?=.*\d)(?=.*[a-z])(?=.*[!@#$%&])|(?=.

我需要使用正则表达式验证密码 下面是验证标准

密码应包含4种字符类型中的任意3种:

  • 小写字母(a、b、c、d、…、y、z)
  • 大写字母(A、B、C、D、…、Y、Z)
  • 数字(0,1,2,3,4,5,6,7,8,9)
  • 特殊字符($、&、%、!、#、@)”
  • 我已经想出了下面的正则表达式,但问题是它只验证到前9个字符,并允许字后的任何字符

    ^(?=.{9,})((?=.*\d)(?=.*[a-z])(?=.*[A-Z])|(?=.*\d)(?=.*[a-z])(?=.*[!@#$%&])|(?=.*\d)(?=.*[A-Z])(?=.*[!@#$%&])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&])).*$
    
    编辑:我也问过类似的问题,但我的问题不同,因为它期望满足4个标准中的3个,并且只有有限的字符集


    任何帮助都将不胜感激!

    这是一个奇怪的密码正则表达式检查要求

    (^[a-zA-Z0-9]+$)|(^[a-z0-9!@#$%&]+$)|(^[A-Z0-9!@#$%&]+$)|(^[a-zA-Z!@#$%&]+$)
    
    4“选择3”有4种可能性。这里有4个捕获组。我想你可以知道它在做什么…

    替换你最后的“由字符组成”复选框

    选中“仅由允许的字符组成”


    前者允许您在满足其他规则的情况下使用任何字符;后者确保输入中的每个字符都是允许的字符之一。

    如果您可以添加一个示例,则可能会出现重复。这些测试中的每一项都很容易在几行非正则代码中实现。是否有一些为什么你必须把它们合并成一个正则表达式?如果你在六个月后当需求改变时回到那一段代码…你还记得正则表达式的版本是如何工作的吗?我也相信在这种情况下放弃正则表达式会更好,在合理的时间内完成它太难了。根据经验,只要有可能,就应该避免使用正则表达式。像您这样的书籍可以尝试将
    *$
    替换为
    [a-zA-Z\d!@#$%&]*$
    这不起作用,因为必须有4种类型中的3种(也就是说,您不能将它们组合到字符类中,因为这意味着或)。如果你认为它不起作用,请给我一个应该匹配的模式,但这个正则表达式不匹配。它适用于要求的内容,比作者的混乱更有效。听着,不仅我认为它不起作用。有人对你的答案投了反对票。太好了。谢谢。
    .*$
    
    [A-Za-z0-9$&%!#@]*$