带有密码的Java字符串比较[关闭]

问题描述 投票:-2回答:1

比较两个字符串时遇到问题。我是一个完整的初学者。

private static final Pattern PASSWORD_PATTERN =
        Pattern.compile("^" +
                "(?=.*[0-9])" +         //at least 1 digit
                //"(?=.*[a-z])" +         //at least 1 lower case letter
                "(?=.*[A-Z])" +         //at least 1 upper case letter
                "(?=.*[a-zA-Z])" +      //any letter
                //"(?=.*[@#$%^&+=])" +    //at least 1 special character
                "(?=\\S+$)" +           //no white spaces
                ".{6,}" +               //at least 4 characters
                "$");

else if(!PASSWORD_PATTERN.matcher(password).matches())
    {
        Toast.makeText(SignUpActivity.this, "Passwords must have at least 1 Uppercase letter, Digit, No spaces and at least 6 Characters.", Toast.LENGTH_LONG).show();
    }
java android
1个回答
0
投票

您可以查看下面提到的代码,以使用正则表达式验证密码。

import java.util.regex.Matcher;
import java.util.regex.Pattern;



public class PasswordValidator{

  private Pattern pattern;
  private Matcher matcher;

  private static final String PASSWORD_PATTERN = 
          "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";

  public PasswordValidator(){
      pattern = Pattern.compile(PASSWORD_PATTERN);
  }

  /**
   * Validate password with regular expression
   * @param password password for validation
   * @return true valid password, false invalid password
   */
  public boolean validate(final String password){

      matcher = pattern.matcher(password);
      return matcher.matches();

  }

}

描述:

(#组开始

 (?=.*\d)           #   must contains one digit from 0-9
 (?=.*[a-z])        #   must contains one lowercase characters
 (?=.*[A-Z])        #   must contains one uppercase characters
 (?=.*[@#$%])        #   must contains one special symbols in the list ` "@#$%"`
 `.`                #  match anything with previous condition checking
 {6,20}             #    length at least 6 characters and maximum of 20 

# End of group

密码正则表达式模式

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})

[整体组合是指6到20个字符的字符串,至少包含一个数字,一个大写字母,一个小写字母和一个特殊符号(“@#$%”)。这种正则表达式模式对于实现强大而复杂的密码非常有用。

P.S分组公式的顺序无关紧要。

© www.soinside.com 2019 - 2024. All rights reserved.