java - 更高效的密码检查器

标签 java password-checker

我分配的项目有以下规则:

规则:

  1. 字符数必须在 [6, 10] 范围内

2. ['a', 'z'] 范围内必须有 >= 2 个字符

3. ['A', 'Z'] 范围内必须有 >= 2 个字符

  • ['0', '9'] 范围内必须有 >= 2 个字符
  • 例如,pw1("aaBC09-+") 应返回 true,pw1("aabC09-+") 应返回 false。

    我已经附上了我的代码,但是我可以使用更高效/更简洁的代码吗?

    import java.util.*;
    
    public class PassChecker2 {
    
    public static void main(String[] args) {
    
    Scanner input = new Scanner(System.in);
    
    // Prompt User to Enter String
    System.out.print("Enter Password: ");
    
    // Grab User Generated String
    String pw = input.next();
    
    // Pass String to be Checked
    boolean valid_pw = checkPW(pw);
    
    if(valid_pw)
      System.out.println(pw + " is a valid password!");
    else
      System.out.println(pw + " is not a valid password!");
    
    }
    
    public static boolean checkPW(String pw)
    {
    
    int pwLowerCase = 0,
         pwUpperCase = 0,
         pwNumber = 0;
    
    // Return False if PW is too Small / Large
    if(!(pw.length() >= 2 && pw.length() <= 10))
        return false;
    
    for(int position = 0; position < pw.length(); ++position)
    {
    
        char character = pw.charAt(position);
    
        if(character >= 'a' && character <= 'z')
            ++pwLowerCase;
        else if(character >= 'A' && character <= 'Z')
            ++pwUpperCase;
        else if(character >= '1' && character <= '9')
            ++pwNumber;
    
    }
    
    return (pwLowerCase >= 2 && pwUpperCase >= 2 && pwNumber >= 2);
    
    }
    

    }

    最佳答案

    恕我直言,我们可以使用正则表达式进行密码检查,而不是编写java代码:

    ^(?=.*[A-Z].*[A-Z])(?=.*[0-9].*[0-9])(?=.*[a-z].*[ a-z])。{6,10}$

    检查表达式是否满足您的需求:

    a Ruby regular expression editor

    然后,您可以使用 java.util.regex 包中的 MatcherPattern 来使用正则表达式

    正则表达式的优点:

    可以在不同语言中重复使用。假设对于网站开发,我们可能同时使用客户端检查和服务器端检查,我们不会同时为 javascript 和 java 后端编写检查器,而是在两侧都使用正则表达式。

    关于java - 更高效的密码检查器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53771336/

    相关文章:

    java - 将 JTextField 的文本分配给数组的下一个元素

    Java 密码模式

    c++ - C++ 中的用户名/密码检查器出错

    javascript - 纯js密码检查器。如何检查密码检查器中的规则

    java - 带有自定义异常 Java 的密码检查器无输出

    java - 将各种类型的函数应用于值

    java - spring 集成超时客户端

    java - 是否可以使用 badlogic(LibGDX) 创建项目而不使用他们的 LibGDX 项目生成器?

    java - 在 Java 中使用 ssh2 连接到受 RSA SecurID 保护的 linux 系统

    c - C中的密码复杂度