网站首页 > 精选教程 正文
今天,几乎所有的应用程序都需要密码验证。有各种验证密码的方法,从手动编写到使用第三方可用API。在本Java正则表达式密码验证教程中,我们使用正则表达式构建密码验证器。
1. 密码验证的正则表达式
((?=.*[a-z])(?=.d)(?=.[@#$%])(?=.*[A-Z]).{6,16})
上述正则表达式有以下部分:
(?=.*[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正则表达式的密码验证,它能够验证字母数字和特殊字符,包括最大和最小密码长度。
猜你喜欢
- 2024-11-11 RuoYi若依系统的验证码如何替换为更美观的EasyCaptcha
- 2024-11-11 「Java」伪共享验证 什么是伪共享?伪共享会导致运算结果错误吗?
- 2024-11-11 Azure上的Java:云原生身份验证 azure java
- 2024-11-11 Java之HTTP请求权限验证 java之http请求权限验证怎么办
- 2024-11-11 java短信验证平台_JAVA实现利用第三方平台发送短信验证码
- 2024-11-11 OAuth2+JWT 实现权限验证 oauth2权限控制
- 2024-11-11 Java 的业务逻辑验证框架 之-fluent-validator
- 2024-11-11 java 生成4位短信验证码方法 java+生成4位短信验证码方法有哪些
- 2024-11-11 Java策略模式实现动态验证不同来源的数据
- 2024-11-11 Java安全编程:公钥加密和私钥签名的实践指南
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)