C# 密码正则表达式验证

C# 密码正则表达式验证,c#,regex,C#,Regex,这些都是要求,但我想这对我的正则表达式技能来说太复杂了 。在6到10个字母数字字符之间 . 允许的A-Z,A-Z,0-9,@,$,\ubr/> . 必须以字母开头 . 必须至少包含一个数字 . 不能包含两个连续的相同字符 . 不能包含两个连续的相同数字 我知道正则表达式的基本知识,比如 [A-Za-Z]=仅限字符等。。。但是当涉及到连续的角色和东西时 试试这个 string pattern1 = @"^[a-zA-Z]([a-zA-Z])*"; //start and any n

这些都是要求,但我想这对我的正则表达式技能来说太复杂了

。在6到10个字母数字字符之间
. 允许的A-Z,A-Z,0-9,@,$,\ubr/> . 必须以字母开头
. 必须至少包含一个数字
. 不能包含两个连续的相同字符
. 不能包含两个连续的相同数字

我知道正则表达式的基本知识,比如 [A-Za-Z]=仅限字符等。。。但是当涉及到连续的角色和东西时

试试这个

        string pattern1 = @"^[a-zA-Z]([a-zA-Z])*"; //start and any number of characters
        string pattern2 = @"[0-9]+"; //one number or more numbers
        string pattern3 = @"[@#$%]*"; // special symbol allowed
        string pattern4 = @"(.)\1";//consecutive characters
        string pattern5 = @"^(.){6,10}$"; //min max
((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W]).{6,20})
上述正则表达式的说明:

(           # Start of group
  (?=.*\d)      #   must contains one digit from 0-9
  (?=.*[a-z])       #   must contains one lowercase characters
  (?=.*[A-Z])       #   must contains one uppercase characters
  (?=.*[\W])        #   must contains at least one special character
              .     #     match anything with previous condition checking
                {6,20}  #        length at least 6 characters and maximum of 20 
)           # End of group

“/W”将增加可用于密码的字符范围,pit将更加安全。

如果要验证密码,可以使用组来执行soo

(?<a>[a-zA-Z])?(?<b>[0-9])?(?<c>[@%$#/\\\(\)])?
(?[a-zA-Z])?(?[0-9])?(?[@%$\35;/\ \(\)])?
将在3组(a、b和c)中的任何一组为您提供匹配

大写和小写字符将在a组中

数字字符将在b组中

特殊字符将在c组中

您可以使用regex.match.groups(“a”).count查看是否可以找到组a中的任何字符


如果在所有3个组中都找到字符,则密码为强密码

为什么对密码有如此奇怪的限制?为什么不允许所有字符和任意长度?使用多个正则表达式要比使用一个正则表达式容易得多,我希望这就是您的目的。多个正则表达式还允许向用户提供有意义的反馈。为什么要让用户的密码遵循某一格式?这不仅让用户非常恼火,而且降低了安全性,因为现在攻击者知道系统中的每个密码都必须在这些非常有限的限制范围内。说真的,最多10个字符?你一定是在开玩笑。这是一种糟糕的做法,你应该感到很难过。(如果这是一项作业,那么学校/大学应该感到很难过,因为它让人们意识到密码格式/大小限制是可以的。)