Java 编写用于密码验证的正则表达式
我正在Eclipse中编写一个Java程序,检查输入的密码是否符合条款和条件,是否为有效密码 条款和条件包括:Java 编写用于密码验证的正则表达式,java,regex,eclipse,Java,Regex,Eclipse,我正在Eclipse中编写一个Java程序,检查输入的密码是否符合条款和条件,是否为有效密码 条款和条件包括: 密码必须至少包含一个大写字母(任意位置) 密码必须至少包含一个小写字母(任意位置) 密码必须包含数字(任何位置) 密码长度必须至少为6个字符 您可以使用以下正则表达式来完成您的需求: [A-Z]将匹配字符串中任何位置的大写字母 [a-z]将匹配字符串中任何位置的小写字母 [0-9]将匹配字符串中任何位置的数字 如果一行中有六个(或更多)字符,{6}将匹配 要匹配您的所有要求,请检查上述
您可以使用以下正则表达式来完成您的需求:
[A-Z]
将匹配字符串中任何位置的大写字母[a-z]
将匹配字符串中任何位置的小写字母[0-9]
将匹配字符串中任何位置的数字{6}
将匹配要匹配您的所有要求,请检查上述各项是否匹配,并将结果一起显示。我建议您避免使用复杂的正则表达式,只需重复密码中的字符即可。用“相应的实用方法”测试每个条件,如:
public static boolean isPasswordValid(String pw) {
if (pw != null && pw.length() > 5) {
boolean oneUpper = false;
boolean oneLower = false;
boolean oneDigit = false;
for (char ch : pw.toCharArray()) {
if (Character.isUpperCase(ch)) {
oneUpper = true;
} else if (Character.isLowerCase(ch)) {
oneLower = true;
} else if (Character.isDigit(ch)) {
oneDigit = true;
}
}
return oneUpper && oneLower && oneDigit;
}
return false;
}
查看此链接可能有助于您理解Regex您的问题是什么?你试过什么?你被困在哪里了?我不会为这样一个简单的任务编写正则表达式,但你甚至都没有尝试过……我在这两个方面都支持Smutje。但这里有一个提示:与其使用正则表达式,为什么不直接循环密码中的字符,并记录是否找到大写、小写和数字。那么您的答案就是
foundUpper&&foundLower&&foundNumber&&string.length()>=6
。您想在这里做什么?您是在尝试学习如何编写正则表达式,还是在尝试编写好的代码?如果是前者,你也许可以让regex这样做,但这是一种可怕的方式。以这种方式生成的代码不容易阅读、理解、维护、修复或扩展,所有这些对于良好的编程都至关重要。如果您想写得好,可以编写函数来验证每个规则,并对一系列规则进行测试。如果全部通过,则密码通过。使用正则表达式查看字符串的长度是否>=某个数字是否。。。有意思。是的,我不想这样做。然而,OP要求一个正则表达式。我不知道这是不是一个要求,或者这只是第一件让我想到的事情。(不过,我不是那个否决你的人。)