我在使用正则表达式验证至少包含 5 个字符的密码时遇到了一些问题。
我正在使用一个非常简单的正则表达式,如下所示:
String PASSWORD_PATTERN_MIN_CHARS = "(?=.*[a-z|A-Z]{5,}).{8,}";
正则表达式说密码必须包含最少 5 个字符,最少 8 个字符将是密码长度。
它适用于"aasaT124"
字符串。但失败了"aa12sa4T"
。
显然,只有当字符是连续的时,正则表达式才匹配。
验证失败的字符串也至少包含 5 个字符。
此正则表达式表示字符串必须包含 5 个字母和至少 8 个字符(字母 + 数字)
(?=(.*[a-zA-Z]){5})^[0-9a-zA-Z]{8,}$
试试这个
(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{5,}.{8,}$/)
我推荐一个特殊用途的库,比如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
}