强密码正则表达式

我需要强大的密码validation正则表达式

Special Characters - Not Allowed Spaces - Not Allowed Numeric Character - At least one character At least one Capital Letter Minimum and Maximum Length of field - 6 to 12 Characters Repetitive Characters - Allowed only two repetitive characters 

我的正则表达式是^(?=.*\d)(?=.*[az])(?=.*[AZ])(?!.*\s)(?=(?:(\w)(?!\1{2}))+).{6,12}$但忽略了特殊字符(在哪里添加?)

请帮忙!

 ^(?=.*[AZ])(?=.*\d)(?!.*(.)\1\1)[a-zA-Z0-9@]{6,12}$ 
  • 特殊字符 – 不允许
  • 空间 – 不允许
  • 字段的最小和最大长度 – 6到12个字符
    [a-zA-Z0-9@]{6,12}
  • 数字字符 – 至少一个字符
    通过积极向前看 (?=.*\d)
  • 至少一封大写字母
    通过积极向前看(?=.*[AZ])
  • 重复字符 – 仅允许两个重复字符
    我不确定你的意思。 负向前瞻(?!.*(.)\1\1)确保不允许任何字符连续出现两次以上。 子串aa没关系, aaa不是。
    使它(?!.*(.+)\1\1)拒绝多个长度重复的子串(如ababab )或在\1之前添加.*以拒绝非连续的重复出现。

听起来不像是一个特别适合Regex的任务,因为你想同时测试多个条件。 (您可以使用多个正则表达式,但是使用LINQ的正常C#是一种更好的测试方法。)尝试以下函数:

 public static bool IsStrongPassword(string password) { // Minimum and Maximum Length of field - 6 to 12 Characters if (password.Length < 6 || password.Length > 12) return false; // Special Characters - Not Allowed // Spaces - Not Allowed if (!(password.All(c => char.IsLetter(c) || char.IsDigit(c)))) return false; // Numeric Character - At least one character if (!password.Any(c => char.IsDigit(c))) return false; // At least one Capital Letter if (!password.Any(c => char.IsUpper(c))) return false; // Repetitive Characters - Allowed only two repetitive characters var repeatCount = 0; var lastChar = '\0'; foreach(var c in password) { if (c == lastChar) repeatCount++; else repeatCount = 0; if (repeatCount == 2) return false; lastChar = c; } return true; } 

确保你导入System.Linq当然,你已经准备好了。

您可以搜索正则表达式库

以下Jquery插件名为pwdMeter,看起来很酷,可以向用户显示什么是强密码,什么不是强密码。

http://shouvik.net/pwdmeter.php