强密码正则表达式
我需要强大的密码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,看起来很酷,可以向用户显示什么是强密码,什么不是强密码。