专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java正则表达式密码验证示例(js正则密码验证)

temp10 2024-09-03 21:55:03 java教程 14 ℃ 0 评论

今天,几乎所有的应用程序都需要密码验证。有各种验证密码的方法,从手动编写到使用第三方可用API。在本Java正则表达式密码验证教程中,我们使用正则表达式构建密码验证器。

1. 密码验证的正则表达式

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

Java正则表达式密码验证示例(js正则密码验证)

上述正则表达式有以下部分:

(?=.*[a-z]) : 这匹配至少一个小写字母的存在。
(?=.*d) : 这匹配至少一个数字(0-9)的存在。
(?=.*[@#$%]) : 这匹配至少一个特殊字符的存在。
((?=.*[A-Z]) : 这匹配至少一个大写字母的存在。
{6,16} : 这将密码的长度限制在最小6个字母到最大16个字母之间。

前4个部分的顺序可以更改,甚至可以从最终的正则表达式中删除。这个事实可以用于以编程方式构建我们的密码验证器。

2. 使用正则表达式验证密码的Java程序

我们正在使我们的验证器可配置,以便根据需要设置限制。例如,如果我们要强制至少一个特殊字符,但不要任何大写字母,我们可以相应地传递所需的参数。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class PasswordValidator
{
  private static PasswordValidator INSTANCE = new PasswordValidator();
  private static String pattern = null;
 
  /**
   * No one can make a direct instance
   * */
  private PasswordValidator()
  {
    //do nothing
  }
 
  /**
   * Force the user to build a validator using this way only
   * */
  public static PasswordValidator buildValidator( boolean forceSpecialChar,
                          boolean forceCapitalLetter,
                          boolean forceNumber,
                          int minLength,
                          int maxLength)
  {
    StringBuilder patternBuilder = new StringBuilder("((?=.*[a-z])");
 
    if (forceSpecialChar)
    {
      patternBuilder.append("(?=.*[@#$%])");
    }
 
    if (forceCapitalLetter)
    {
      patternBuilder.append("(?=.*[A-Z])");
    }
 
    if (forceNumber)
    {
      patternBuilder.append("(?=.*d)");
    }
 
    patternBuilder.append(".{" + minLength + "," + maxLength + "})");
    pattern = patternBuilder.toString();
 
    return INSTANCE;
  }
 
  /**
   * Here we will validate the password
   * */
  public static boolean validatePassword(final String password)
  {
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(password);
    return m.matches();
  }
}

在本文中,我们学习了使用Java正则表达式的密码验证,它能够验证字母数字和特殊字符,包括最大和最小密码长度。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表