我需要一个正则表达式来验证密码,并使用以下规范:
必须介于6到20个字符之间,且至少包含一个大写字母,一个小写字母和一个数字
答案 0 :(得分:7)
我认为这有效:
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{6,20}$
这个想法是使用积极的前瞻来确保密码中包含至少一个小写字母,一个大写字母和一个数字。然后作为最后一步,我只需指定一个点,以允许6-20个字符范围内的任何字符。
答案 1 :(得分:4)
正则表达式用于搜索,而不是用于验证。您不应该努力在单个正则表达式中执行此操作。
话虽如此,因为你正在寻找字符类,并且由于正则表达式支持它们,我建议使用两个或三个正则表达式,检查每个字符串的匹配。
bool IsPasswordValid(string password)
{
if (string.IsNullOrEmpty(password) ||
password.Length > 20 ||
password.Length < 6)
{
return false;
}
else if(!Regex.IsMatch(password, "\d") ||
!Regex.IsMatch(password, "[a-z]") ||
!Regex.IsMatch(password, "[A-Z]"))
{
return false;
}
else
{
return true;
}
}
这比在过于复杂的Regex中编码所有可能的组合更有效。
答案 2 :(得分:0)