【发布时间】:2020-07-08 08:12:56
【问题描述】:
我正在使用此代码来验证用户是否输入了所有字符。此论坛提供了多种解决方案,但无法找到我的问题的答案。
问题1:当输入的密码是“aaBB11@@”这种类型时,它验证并返回ok,而“11aaBB@@”则出错。用不同的模式进行了测试,但找不到正确的字符串。
问题2:我们能否将布尔值(真/假)作为返回值。我猜 matcher.matches() 是布尔值,但我不确定。
public boolean isValidPassword(final String password) {
Pattern pattern;
Matcher matcher;
final String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{6,}$";
pattern = Pattern.compile(PASSWORD_PATTERN);
matcher = pattern.matcher(password);
return matcher.matches();
}
不知道我哪里错了!
【问题讨论】:
-
尝试-->
PASSWORD_PATTERN = "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";然后return PASSWORD_PATTERN.matches(password); -
更改了 PASSWORD_PATTERN,它起作用了,返回总是假的。
-
尝试 --> 像这样定义模式 -->
private static final String PASSWORD_PATTERN = "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";outside isvalidpassword