【发布时间】:2014-04-09 13:36:16
【问题描述】:
我需要检查包含以下 4 个中的 3 个的密码:
- 小写字母
- 大写字母
- 数字字符
- 特殊字符(如 %、$、#、...)
密码长度必须在 6 到 20 个字符之间。我目前有这个:
public void ChangePassword(string password)
{
Regex regex1 = new Regex("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]){6,20}$");
Regex regex2 = new Regex("^(?=.*[0-9])(?=.*[a-z])(?=.*?[#?!@$%^&*-]){6,20}$");
Regex regex3 = new Regex("^(?=.*[0-9])(?=.*[A-Z])(?=.*?[#?!@$%^&*-]){6,20}$");
Regex regex4 = new Regex("^(?=.*[a-z])(?=.*[A-Z])(?=.*?[#?!@$%^&*-]){6,20}$");
Regex regex5 = new Regex("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*?[#?!@$%^&*-]){6,20}$");
Match match1 = regex1.Match(password);
Match match2 = regex2.Match(password);
Match match3 = regex3.Match(password);
Match match4 = regex4.Match(password);
Match match5 = regex5.Match(password);
if (match1.Success || match2.Success || match3.Success ||
match4.Success || match5.Success)
{
Password = password;
}
else
{
throw new PasswordNotGoodException();
}
}
但是,这根本不匹配任何东西。这是一个学校项目,所以我真的需要一些帮助。
【问题讨论】:
标签: c# asp.net regex passwords