Java密码校验(正则表达式):密码由这四种元素组成(数字、大写字母、小写字母、特殊字符),且必须包含全部四种元素;密码长度大于等于8个字符。 您所在的位置:网站首页 字母的构成 Java密码校验(正则表达式):密码由这四种元素组成(数字、大写字母、小写字母、特殊字符),且必须包含全部四种元素;密码长度大于等于8个字符。

Java密码校验(正则表达式):密码由这四种元素组成(数字、大写字母、小写字母、特殊字符),且必须包含全部四种元素;密码长度大于等于8个字符。

2024-07-11 08:38| 来源: 网络整理| 查看: 265

1. 需求

对用户密码的强度进行校验,要求用户密码达到一定的强度,符合安全性要求。

1.1. 基础版需求

密码必须由字母和数字组成(同时包括字母和数字);密码长度大于等于8个字符。

1.2. 进阶版需求

密码由这四种元素组成(数字、大写字母、小写字母、特殊字符),且必须包含全部四种元素;密码长度大于等于8个字符。

2. 基础版解析

需求:密码必须由字母和数字组成(同时包括数字和数字);密码长度大于等于8个字符。

2.1. 原理

使用正则表达式校验字符串。

正则表达式构建思路(负向预查模式):

字符为数字或字母;不能全是数字;不能全是字母;字符数量大于等于8. 2.2. 核心代码 package org.example; import java.util.regex.Pattern; /** * 密码校验器。 */ public class PasswordValidator { /** * 密码由数字和下划线组成,且大于等于8个字符。 */ public static boolean isCharacterAndNumber(String password) { String pattern = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,}$"; return Pattern.matches(pattern, password); } } 2.3. 正则表达式含义解析 含义正则表达式字符串开头^字符为数字或字母[0-9A-Za-z]不全是数字(?![0-9]+$)不全是字母(?![a-zA-Z]+$)字符数量大于等于8{8,}字符串结尾$ 2.4. 测试用例 2.4.1. 示例代码 package org.example; public class TestBase { public static void main(String[] args) { isValid(""); isValid("中文"); isValid("abc-1234567"); isValid("1234567"); isValid("abc"); isValid("zzz111"); isValid("zzz12345"); isValid("abc1234567"); isValid("abc12345bbb"); } private static void isValid(String text) { System.out.println(text + " === " + PasswordValidator.isCharacterAndNumber(text)); } } 2.4.2. 运行结果

在这里插入图片描述

3. 进阶版解析

需求:密码由四种元素组成(数字、大写字母、小写字母、特殊字符),且必须包含全部四种元素;密码长度大于等于8个字符。

3.1. 原理

使用正则表达式校验字符串。

正则表达式构建思路(负向预查模式):

密码只包含数字、大写字母、小写字母和特殊字符;不全是 数字,或大写字母,或小写字母;不全是 数字,或大写字母,或特殊字符;不全是 数字,或小写字母,或特殊字符;不全是 大写字母,或小写字母,或特殊字符;字符数量大于等于8. 3.2. 核心代码 import java.util.regex.Pattern; /** * 密码校验器。 */ public class PasswordValidator { /** * 密码由四种元素组成(数字、大写字母、小写字母、特殊字符),且必须包含全部四种元素;密码长度大于等于8个字符。 */ public static boolean isValid(String password) { // 正则表达式的内容如下: // ^(?![0-9A-Za-z]+$)(?![0-9A-Z\W]+$)(?![0-9a-z\W]+$)(?![A-Za-z\W]+$)[0-9A-Za-z~!@#$%^&*()__+`\-={}|[\]\\:";'?,./]{8,}$ // 在 Java 中使用,需要转义;转义后的结果如下。 String pattern = "^(?![0-9A-Za-z]+$)(?![0-9A-Z\\W]+$)(?![0-9a-z\\W]+$)(?![A-Za-z\\W]+$)[0-9A-Za-z~!@#$%^&*()_+`\\-={}|\\[\\]\\\\:\";'?,./]{8,}$"; return Pattern.matches(pattern, password); } } 3.3. 正则表达式含义解析 含义正则表达式字符串开头^密码只包含数字、大写字母、小写字母和特殊字符;[0-9A-Za-z~!@#$%^&*()_+`-={}|[]\:";'?,./]不全是 数字,或大写字母,或小写字母;(?![0-9A-Za-z]+$)不全是 数字,或大写字母,或特殊字符;(?![0-9A-Z\W]+$)不全是 数字,或小写字母,或特殊字符;(?![0-9a-z\W]+$)不全是 大写字母,或小写字母,或特殊字符;(?![A-Za-z\W]+$)字符数量大于等于8{8,}字符串结尾$ 3.4. 测试用例 3.4.1. 示例代码 public class TestComplex { public static void main(String[] args) { isValid(""); isValid("中文"); isValid("123456789"); isValid("aaabbbccc"); isValid("AAABBBCCCabc"); isValid("AAAbbb123"); isValid("abcABC1@中文"); isValid("aB1@"); isValid("abcABC1@"); isValid("aaaBBB111@"); isValid("aaabbbBBB111~!@#$%^&*()_+=-`{}|[]\\:\";'?,./"); } private static void isValid(String text) { System.out.println(text + " === " + PasswordValidator.isValid(text)); } } 3.4.2. 运行结果

在这里插入图片描述

4. Gitee示例项目(idea)

密码校验器Demo

5. 参考

java正则校验,密码必须由字母和数字组成

几种常见的密码校验正则表达式



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有