Java 更高效的密码检查器

Java 更高效的密码检查器,java,password-checker,Java,Password Checker,分配给我的程序有以下规则: 规则: 字符数必须为[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 v

分配给我的程序有以下规则:

规则:

  • 字符数必须为[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);
    
    }
    
    import java.util.*;
    公共类PassChecker2{
    公共静态void main(字符串[]args){
    扫描仪输入=新扫描仪(System.in);
    //提示用户输入字符串
    系统输出打印(“输入密码:”);
    //抓取用户生成的字符串
    字符串pw=input.next();
    //传递要检查的字符串
    布尔有效_pw=checkPW(pw);
    如果(有效)
    System.out.println(pw+“是有效密码!”);
    其他的
    System.out.println(pw+“不是有效密码!”);
    }
    公共静态布尔校验pw(字符串pw)
    {
    int pw小写=0,
    pwUpperCase=0,
    pwNumber=0;
    //如果PW太小/太大,则返回False
    如果(!(pw.length()>=2&&pw.length()='a'&&character='a'&&character='1'&&character=2&&pwUpperCase>=2&&pwNumber>=2);
    }
    

    }

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

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

    在此处检查表达式是否满足您的要求:

    然后,您可以在
    java.util.regex
    包中使用
    Matcher
    Pattern
    来使用regex表达式

    正则表达式的优势:


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

    我将在其他人之前说这一点-忽略任何告诉您回答此问题的人到任何其他网站。忽略它们;这些评论都是噪音。似乎你没有将
    0
    作为一个数字计算。除此之外,它看起来还可以。你可能会发现它很有用。