【发布时间】:2020-07-30 07:30:06
【问题描述】:
这是一个简单的问题,但请听我说 - Java 家庭作业的一部分有一个密码验证器方法。要求很简单 - 密码必须介于 6-10 个字符之间,只能由数字或字母组成,并且必须至少包含 2 位数字才有效。我使用 if 语句并使用正则表达式进行了此操作,由于某种原因,我无法让非单词字符正则表达式匹配,尽管每个在线正则表达式检查器都显示这应该可以工作,甚至用于正则表达式检查的 jetbrains 插件也显示这应该是有效的。 (我也明白这可以用单行语句来完成,没有 if 语句,但这种方式对我来说更简单。
示例输入 - MyPass123 应该是有效的,MyPass123# 应该匹配非单词字符并且应该返回“密码必须仅由字母和数字组成”,而这永远不会发生。我是 Java 的初学者,所以即使这是一个如此简单的问题,我也很可能没有做正确的事情。提前谢谢!
方法代码如下:
public static void passswordCheck(String password)
{
if(password.length()<6 || password.length()>10)
{
System.out.printf("Password needs to be between 6 and 10 characters");
}
else if(password.matches("\\W")) \\This should match when input is MyPass123#
{
System.out.printf("Password must consist only of letters and digits");
}
else if(!password.matches("/(\\d).*(\\d)/"))
{
System.out.printf("Password needs to have at least 2 digits");
}
else
{
System.out.printf("Password is valid");
}
}
【问题讨论】: