使用正则表达式验证Java密码

时间:2013-08-05 06:54:56

标签: java regex

我在使用正则表达式验证包含最少5个字符的密码时遇到了一些问题。

我使用的是一个非常简单的正则表达式,如下所示:

String PASSWORD_PATTERN_MIN_CHARS = "(?=.*[a-z|A-Z]{5,}).{8,}";

正则表达式说密码必须包含至少5个字符,最少8个字符将是密码长度。

它适用于"aasaT124" String。但是"aa12sa4T"失败了。

显然,仅当字符是连续的时,差异才是正则表达式匹配。

验证失败的字符串也包含最少5个字符。

3 个答案:

答案 0 :(得分:1)

试试这个

(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{5,}.{8,}$/)

答案 1 :(得分:1)

此正则表达式表示字符串必须包含5个字母和至少8个字符(字母+数字)

(?=(.*[a-zA-Z]){5})^[0-9a-zA-Z]{8,}$

答案 2 :(得分:1)

我推荐像vtpassword这样的专用库。您可以定义密码必须匹配的规则。

List<Rule> rules = new ArrayList<>();
rules.add(new LengthRule(8, 99));
rules.add(new LowercaseCharacterRule(5));
PasswordValidator validator = PasswordValidator(rules);

RuleResult ruleResult =
  validator.validate(new PasswordData(new Password("aasaT124")));
if (ruleResult.isValid()) {
  // OK
}