客户要求我阻止用户输入常用密码,但允许他们仅使用字母数字密码。
您是否知道要在内置PasswordStrengthRegularExpression
选项中使用的正则表达式?
编辑:我知道这很模糊,而且我告诉客户。定义类似于
答案 0 :(得分:2)
这对正则表达式来说太过分了。你可以很容易地覆盖重复的角色:
^(?:(.)(?!\1\1)){6,}$
但是,禁止运行顺序字符的唯一方法是枚举所有可能性:
^(?:(?!123|234|345|456|567|678|789).)*$
...无限广告。我认为你能做的最好的事情是需要复杂的字符类型 - 例如,至少两个大写字母,小写字母和数字:
^(?=(?:[^0-9]*[0-9]){2})
(?=(?:[^A-Z]*[A-Z]){2})
(?=(?:[^a-z]*[a-z]){2})
(?:([A-Za-z0-9])(?!\1\1)){6,}$
这将迫使用户有点创意。
答案 1 :(得分:1)
这个怎么样?
passwordStrengthRegularExpression=" @\"(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})"
验证密码符合以下条件:
答案 2 :(得分:1)
我不确定正则表达式是否可以处理该要求,但无论如何,函数可能更具可读性。类似下面的内容将消除任何三个连续相等的字符或三个连续字符,这些字符遵循1(字母或数字)的升序或降序模式。
static bool IsPasswordRelativelyStrong(string input)
{
for (int i = 2; i < input.Length; i++)
{
if (input[i] == input[i - 1] - 1 && input[i - 1] == input[i - 2] - 1)
return false;
else if (input[i] == input[i - 1] + 1 && input[i - 1] == input[i - 2] + 1)
return false;
else if (input[i] == input[i - 1] && input[i - 1] == input[i - 2])
return false;
}
return true;
}
所以给出以下数组
string[] passwords = { "123456", "abcde", "654321", "111223", "11223344" };
只有最后一个通过。可以扩展该功能,以考虑您是否允许和/或要求非字母数字字符以及密码是否必须超过最小长度要求。
答案 3 :(得分:0)
您可以断言最低级别的复杂性;即G。 “至少一个大写,一个小写字母,一个数字,最小长度为6个字符,只有字母数字字符”可以写成
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9]{6,}$
答案 4 :(得分:-2)
试试这个:
passwordStrengthRegularExpression="^\S*([a-zA-Z0-9]{1,10})$"