Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编写用于密码验证的正则表达式_Java_Regex_Eclipse - Fatal编程技术网

Java 编写用于密码验证的正则表达式

Java 编写用于密码验证的正则表达式,java,regex,eclipse,Java,Regex,Eclipse,我正在Eclipse中编写一个Java程序,检查输入的密码是否符合条款和条件,是否为有效密码 条款和条件包括: 密码必须至少包含一个大写字母(任意位置) 密码必须至少包含一个小写字母(任意位置) 密码必须包含数字(任何位置) 密码长度必须至少为6个字符 您可以使用以下正则表达式来完成您的需求: [A-Z]将匹配字符串中任何位置的大写字母 [a-z]将匹配字符串中任何位置的小写字母 [0-9]将匹配字符串中任何位置的数字 如果一行中有六个(或更多)字符,{6}将匹配 要匹配您的所有要求,请检查上述

我正在Eclipse中编写一个Java程序,检查输入的密码是否符合条款和条件,是否为有效密码

条款和条件包括:

  • 密码必须至少包含一个大写字母(任意位置)
  • 密码必须至少包含一个小写字母(任意位置)
  • 密码必须包含数字(任何位置)
  • 密码长度必须至少为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要求一个正则表达式。我不知道这是不是一个要求,或者这只是第一件让我想到的事情。(不过,我不是那个否决你的人。)