Java密码校验(正则表达式):密码由这四种元素组成(数字、大写字母、小写字母、特殊字符),且必须包含全部四种元素;密码长度大于等于8个字符。
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正则校验,密码必须由字母和数字组成
几种常见的密码校验正则表达式
相关文章:
Java密码校验(正则表达式):密码由这四种元素组成(数字、大写字母、小写字母、特殊字符),且必须包含全部四种元素;密码长度大于等于8个字符。
1. 需求 对用户密码的强度进行校验,要求用户密码达到一定的强度,符合安全性要求。 1.1. 基础版需求 密码必须由字母和数字组成(同时包括数字和数字);密码长度大于等于8个字符。 1.2. 进阶版需求 密码由这四种元素…...
【AMI】2400 环境安装步骤
2400 环境安装步骤 ----------Ubuntu14.4 MDS4.0 加载代码需要勾上Update Installing SPX related packages sudo apt install gcc-multilib mtd-utils:i386 subversion patch patchutils bison sudo apt install libc6-dev libxml-dom-perl zlib1g zlib1g-dev libcurl4-ope…...
AI:124-基于深度学习的人体遮挡物体重建技术
🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…...
23种设计模式之单例模式
目录 什么是单例模式 单例模式的优点 创建单例模式的三大要点 单例模式的实现方式 饿汉模式 懒汉模式 使用场景 什么是单例模式 单例模式是一种创建型设计模式,它的核心思想是保证一个类只有一个实例,并提供一个全局访问点来访问这个实例。 什…...
leetCode 30天
题太难了,就来一个N皇后吧 51. N 皇后 class Solution { private:vector<vector<string>> res;void backtracking(int n, int row, vector<string>& chessboard){if (row n){res.push_back(chessboard);return;}for (int col 0; col<n;…...
vue3+vite+ts 配置commit强制码提交规范配置 commitlint
配置 git 提交时的 commit 信息,统一提交 git 提交规范 安装命令: npm install -g commitizen npm i cz-customizable npm i commitlint/config-conventional commitlint/cli -D 文件配置 根路径创建文件 commitlint.config.js module.exports {// 继承的规…...
PlateUML绘制UML图教程
UML(Unified Modeling Language)是一种通用的建模语言,广泛用于软件开发中对系统进行可视化建模。PlantUML是一款强大的工具,通过简单的文本描述,能够生成UML图,包括类图、时序图、用例图等。PlantUML是一款…...
自然语言处理(NLP)——使用Rasa创建聊天机器人
1 基本概念 1.1 自然语言处理的分类 IR-BOT:检索型问答系统 Task-bot:任务型对话系统 Chitchat-bot:闲聊系统 1.2 任务型对话Task-Bot:task-oriented bot 这张图展示了一个语音对话系统(或聊天机器人)的基本组成部分和它们之间的…...
使用虚拟主机部署多站点
网站目录权限的管理和虚拟主机的配置。 目录权限控制...
Openresty+Lua+Redis实现高性能缓存
一、背景 当我们的程序需要提供较高的并发访问时,往往需要在程序中引入缓存技术,通常都是使用Redis作为缓存,但是要再更进一步提升性能的话,就需要尽可能的减少请求的链路长度,比如可以将访问Redis缓存从Tomcat服务器…...
基于Vue2用keydown、keyup事件实现长按键盘任意键(或组合键)3秒触发自定义事件(以F1键为例)
核心代码 <template></template> <script> export default {created() {//监听长按快捷键addEventListener("keydown", this.keydown);addEventListener("keyup", this.keyup);},destroyed(d) {//移除长按快捷键removeEventListener(&…...
【C#】.net core 6.0 设置根目录下某个文件夹可访问,访问创建的图片等资源
欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。…...
报错ValueError: Unknown CUDA arch (8.6) or GPU not supported
文章目录 问题描述解决方案参考文献 问题描述 报错 ValueError: Unknown CUDA arch (8.6) or GPU not supported 本人显卡为 RTX 3060,CUDA 为 10.2,PyTorch 为 1.5 解决方案 修改 C:\Users\Administrator\Envs\test\Lib\site-packages\torch\utils\c…...
Golang 并发 Cond条件变量
Golang 并发 Cond条件变量 背景 编写代码过程中, 通常有主协程和多个子协程进行协作的过程,比如通过 WaitGroup 可以实现当所有子协程完成之后, 主协程再继续执行。 如上的场景是主协程等待子协程达到某个状态再继续运行。 但是反过来怎么…...
linux 下 chrome 无法在设置里面配置代理的解决方法
文章目录 [toc]解决方法查找 chrome 命令路径查看 chrome 启动文件方式一方法二 在 linux 环境下,使用 chrome 没办法像 firefox 一样在设置里面配置代理,打开 chrome 的设置会有下面的内容显示 When running Google Chrome under a supported desktop e…...
C#上位机与三菱PLC的通信03--MC协议之A-1E报文解析
1、MC协议帧 MC协议可以在串口通信,也可以在以太网通信,有A-1E和Qna-3E两种模式,这两种都是三菱PLC通信协议中比较常用的两种,一般我们使用比较多的是以太网通信,对于FX5U系列/Q系列/Qna系列/L系列的PLC,…...
nodeJS 的 npm 设置国内高速镜像之淘宝镜像的方法
1、我们知道 nodeJS 是老外搞出来的,服务器放在了国外,国内的小朋友访问起来会比较慢,阿里巴巴的淘宝给出了有力支持,现在我们就将 nodeJS 的镜像地址切换为国内的淘宝镜像。 2、查看当前的镜像地址: npm get registr…...
Nginx方向代理和负载均衡配置
1. Nginx介绍 2.Nginx常用命令 cd /usr/local/nginx/sbin/ ./nginx 启动 ./nginx -s stop 停止 ./nginx -s quit 安全退出 ./nginx -s reload 重新加载配置文件 如果我们修改了配置文件,就需要重新加载。 ps aux|grep nginx 查看nginx进程3.nginx配置文件 …...
贪心算法篇
“靠漫步,将生趣填饱~” 贪心算法简介? 贪心算法(Greedy Algorithm),也称为贪婪算法,是一种在解决问题时采取贪心策略的方法。其基本原理是很简单的: “在每个决策点上都选择当下看似最好的选项…...
springboot/ssm大学生就业服务平台就业招聘宣传管理系统Java系统
springboot(ssm大学生就业服务平台 就业招聘宣传管理系统Java系统 开发语言:Java 框架:springboot(可改ssm) vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql…...
大模型推理优化:从 KV Cache 到长上下文加速
为什么大模型“读文件”会越来越慢 很多人在使用大模型时都会有一个明显感受: 普通聊天时回复很快;但一旦输入几十页文档、长代码仓库、长上下文 Prompt;模型往往会“思考很久”才吐出第一个字。 但奇怪的是: 一旦第一个 Token 出…...
Java 资源释放与堆外内存管理机制演进分析
在 Java 虚拟机(JVM)的内存管理模型中,垃圾收集器(GC)仅负责回收 JVM 堆内存(Heap Memory)中不可达对象所占用的空间。然而,Java 程序在运行过程中必然会涉及到不受 GC 直接控制的外…...
CH32F103C8T6 vs STM32F103C8T6:程序下载生态深度对比与国产替代实战
CH32F103C8T6与STM32F103C8T6程序下载生态全维度对比与国产化迁移指南 在嵌入式开发领域,MCU的程序下载方式往往决定了开发效率的上限。当工程师从熟悉的STM32平台转向国产CH32时,最直接的"水土不服"往往就发生在烧录环节——同样的SWD接口为何…...
开发AI应用时借助Taotoken模型广场快速进行模型选型与测试
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 开发AI应用时借助Taotoken模型广场快速进行模型选型与测试 在开发基于大语言模型的应用或功能时,一个常见的挑战是如何…...
ARM错误恢复中断机制与ERRERICR2寄存器详解
1. ARM错误恢复中断机制概述在ARM架构的可靠性、可用性和可维护性(RAS)系统中,错误恢复中断是实现硬件容错的关键机制。当处理器检测到可恢复的错误条件时,通过这套机制能够快速通知系统进行错误处理,而ERRERICR2寄存器…...
修复OpenFDE14缩放窗口时标题栏与应用窗口的宽度不同步的问题
1.问题描述 在OpenFDE 14上缩放应用窗口大小时,会出现标题栏宽度与应用窗口宽度无法保持同步变化的问题,在一些简单布局的应用缩放场景下,同步效果比较好,但对于较复杂布局的应用场景下,不同步的现象就比较明显&#…...
任天堂Switch游戏文件管理终极指南:NSC_BUILDER一站式解决方案
任天堂Switch游戏文件管理终极指南:NSC_BUILDER一站式解决方案 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights …...
Sprout OS:为创意工作者打造的Linux开源操作系统部署与优化指南
1. 项目概述:一个为创意工作者量身定制的操作系统如果你是一名设计师、视频剪辑师、音乐制作人或者任何需要高性能计算和稳定创作环境的创意专业人士,那么你肯定对“创作环境”这四个字又爱又恨。爱的是,它是你挥洒才华的舞台;恨的…...
修复肝衰竭的“免疫刹车”:ANXA1是控制炎症失控、促进消退的关键内源信号
慢加急性肝衰竭(ACLF)的发病进程主要由全身性炎症反应及免疫功能紊乱共同驱动,其病理机制复杂且临床预后较差。2026年4月,浙江大学与斯坦福大学,在Hepatology期刊在线发表了题为“Dissecting the liver inflammation e…...
基于梯度权值追踪的无监督域自适应优化研究
SummaryArticleObjectiveMethodComments基于梯度权值追踪的域自适应分类研究解决无监督领域自适应方法中存在的过拟合问题文章采用了基于梯度权值追踪的剪枝与优化算法来解决过拟合问题。该算法首先对样本进行训练,识别出重要的连接,并用权值的绝对值来量…...
