我在使用正则表达式验证包含最少5个字符的密码时遇到了一些问题。
我使用的是一个非常简单的正则表达式,如下所示:
String PASSWORD_PATTERN_MIN_CHARS = "(?=.*[a-z|A-Z]{5,}).{8,}";
正则表达式说密码必须包含至少5个字符,最少8个字符将是密码长度。
它适用于"aasaT124"
String。但是"aa12sa4T"
失败了。
显然,仅当字符是连续的时,差异才是正则表达式匹配。
验证失败的字符串也包含最少5个字符。
答案 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
}