我正在尝试创建一个读取密码并确定是否可以使用的密码的小程序。我正在使用matchs()来查看它是否至少有一个字母(大写或小写)和一位数字以及6个字符长。我尝试使用这样的匹配项:
if ( passwordLength >= 6
&& password.matches("[A-Za-z]")
&& password.matches("\\d")
) {
System.out.println("Valid Password.");
}
else {
System.out.println("Invalid Password.");
}
我不确定我在做什么错。请帮忙。
最佳答案
matches
函数应使用我们提供的正则表达式尝试匹配整个字符串。因此,您可以使用带有复杂正则表达式的单个函数,而不是使用两个或多个match函数进行条件检查。而且似乎您的密码不仅包含数字或字母,还包含一些其他字符。
string.matches("^(?=.*[a-zA-Z])(?=.*\\d).{6,}$");
(?=.*[a-zA-Z])
正向前行,断言要匹配的字符串必须至少包含一个字母。(?=.*\\d)
断言它必须至少包含一位数字。.{6,}
确保长度必须至少为6,并且最多为任意长度。要使长度精确为6,则将上面的
.{6,}
更改为.{6}
DEMO
关于java - 我的matchs()代码无法正常工作。为什么不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33534597/