【发布时间】:2012-05-30 13:21:18
【问题描述】:
我对密码规则有要求。以下是规则。
密码必须遵循以下准则:
- 至少有八个字符
- 包含这 4 个选项中的 3 个:小写字母、大写字母、数字或特殊字符
-
当用户指定的密码不符合上述规则时,返回信息说明:
密码长度必须至少为 8 个字符,并且包含以下 4 个选项中的 3 个:
- 小写字母 (a-z)
- 大写字母 (A-Z)
- 数字 (0-9)
- 特殊字符 (!@#$%^&')
请帮我获取一个正则表达式来处理上述情况。
感谢您的所有帮助。以下是我的要求的解决方案
if(password.matches("^(?=.*[0-9]).{1,}$")){
validCount++;
}
if(password.matches("^(?=.*[a-z]).{1,}$")){
validCount++;
}
if(password.matches("^(?=.*[A-Z]).{1,}$")){
validCount++;
}
if(password.matches("^(?=.*[@#$%^&+=]).{1,}$")){
validCount++;
}
return validCount >= 3 ? true : false;
谢谢, 拉姆基
【问题讨论】:
-
我认为在没有正则表达式的情况下这样做会更有意义......或者使用 4 个单独的正则表达式(检查 4 个匹配项中的 3 个)。
-
我会使用 4 个单独的正则表达式来执行此操作,并像 jahroy 所说的那样检查 4 个匹配项中的 3 个。 8 个字符长只是检查
strPassword.Length >= 8 -
[regex] password的搜索结果有几十个。由于您显然没有自己尝试过,也许对这些进行回顾会让您入门。 :) 从本页右侧的Related列表开始。 -
不是一个真正的问题?模式匹配是正则表达式的目的。
标签: regex