JAVA 常用 API 正则表达式

article/2025/7/19 3:26:35

1 正则表达式作用

  • 作用一:校验字符串是否满足规则
  • 作用二:在一段文本中查找满足要求的内容

2 正则表达式规则

2.1 字符类

package com.bjpowernode.test14;public class RegexDemo1 {public static void main(String[] args) {//public boolean matches(String regex): 判断是否与正则表达式匹配,匹配则返回 true// 只能是 a  b  cSystem.out.println("------------1--------------");System.out.println("a".matches("[abc]"));  //trueSystem.out.println("z".matches("[abc]"));  //falseSystem.out.println("ab".matches("[abc]"));  //falseSystem.out.println("ab".matches("[abc][abc]"));  //true//不能出现abcSystem.out.println("------------2--------------");System.out.println("a".matches("[^abc]"));  //falseSystem.out.println("z".matches("[^abc]"));  //trueSystem.out.println("zz".matches("[^abc]"));  //falseSystem.out.println("zz".matches("[^abc][^abc]"));  //true// a - z     A - ZSystem.out.println("------------3--------------");System.out.println("a".matches("[a-zA-Z]"));  //trueSystem.out.println("z".matches("[a-zA-Z]"));  //trueSystem.out.println("aa".matches("[a-zA-Z]"));  //falseSystem.out.println("zz".matches("[a-zA-Z]")); //falseSystem.out.println("zz".matches("[a-zA-Z][a-zA-Z]")); //trueSystem.out.println("0".matches("[a-zA-Z]")); //falseSystem.out.println("0".matches("[a-zA-Z0-9]")); //true//[a-d[m-p]]   a到d,或m到p     同 3System.out.println("------------4--------------");System.out.println("a".matches("[a-d[m-p]]"));  //trueSystem.out.println("d".matches("[a-d[m-p]]")); //trueSystem.out.println("m".matches("[a-d[m-p]]")); //trueSystem.out.println("p".matches("[a-d[m-p]]")); //trueSystem.out.println("e".matches("[a-d[m-p]]"));//falseSystem.out.println("0".matches("[a-d[m-p]]"));//false//[a-z&&[def]]a-z和def的交集。为:d,e,f//细节:如果要求两个范围的交集,那么需要写符号&&//如果写成了一个&,那么此时&表示就不是交集了,而是一个简简单单的&符号System.out.println("------------5--------------");System.out.println("a".matches("[a-z&[def]]"));  //trueSystem.out.println("&".matches("[a-z&[def]]"));  //trueSystem.out.println("d".matches("[a-z&&[def]]"));  //trueSystem.out.println("0".matches("[a-z&&[def]]"));  //falseSystem.out.println("a".matches("[a-z&&[def]]"));   //falseSystem.out.println("&".matches("[a-z&&[def]]"));   //false//[a-z&&[^bc]]  a-z和非bc的交集  (等同于[ad-z])System.out.println("------------6--------------");System.out.println("a".matches("[a-z&&[^bc]]"));System.out.println("b".matches("[a-z&&[^bc]]")); //falseSystem.out.println("0".matches("[a-z&&[^bc]]"));  //false//[a-z&&[^m-p]]     a到z和除了m到p的交集   (等同于[a-lq-z])System.out.println("------------7--------------");System.out.println("a".matches("[a-z&&[^m-p]]"));  //trueSystem.out.println("m".matches("[a-z&&[^m-p]]"));   //falseSystem.out.println("0".matches("[a-z&&[^m-p]]"));  //false}
}

2.2 预定义字符

package com.bjpowernode.test14;public class RegexDemo2 {public static void main(String[] args) {//    \   转义字符改变后面那个字符原本的含义//练习:以字符串的形式打印一个双引号System.out.println("\"");//此时\表示转义字符,改变了后面那个双引号原本的含义//把他变成了一个普普通通的双引号而已。// \  表示转义字符// 路径中的\\ :前面的\是一个转义字符,改变了后面\原本的含义,把他变成一个普普通通的\而己。// .表示任意一个字符System.out.println("你".matches(".."));   //falseSystem.out.println("你a".matches(".."));    //trueSystem.out.println("你".matches("."));    //true//  \\d 只能是任意的一位数字System.out.println("a".matches("\\d"));  //falseSystem.out.println("3".matches("\\d"));  //trueSystem.out.println("333".matches("\\d"));  //falseSystem.out.println("333".matches("\\d\\d\\d"));  //true//  \\w 只能是一位单词字符  [a-zA-Z_0-9]    (可以是下划线)System.out.println("z".matches("\\w"));   //trueSystem.out.println("2".matches("\\w"));   //trueSystem.out.println("_".matches("\\w"));   //trueSystem.out.println("21".matches("\\w"));   //falseSystem.out.println("你".matches("\\w"));   //false//  \\W 非单子字符     \\W 是对 \\w 的取反System.out.println("你".matches("\\W"));  //true}
}

2.3 数量词

package com.bjpowernode.test14;public class RegexDemo3 {public static void main(String[] args) {//必须是数字 字母 下划线  至少6位System.out.println("2442f2_fsf".matches("\\w{6,}"));   //trueSystem.out.println("244".matches("\\w{6,}"));   //false//必须是数字和字符  必须是4位System.out.println("23df".matches("[a-zA-Z0-9]{4}"));  //trueSystem.out.println("23_f".matches("[a-zA-Z0-9]{4}"));  //falseSystem.out.println("23df".matches("[\\w&&[^_]]{4}"));  //trueSystem.out.println("23_f".matches("[\\w&&[^_]]{4}"));  //false}
}

3 正则表达式插件

4 练习

需求
请编写正则表达式验证用户名是否满足要求。
要求:大小写字母,数字,下划线一共4-16位
请编写正则表达式验证身份证号码是否满足要求。
简单要求:18位,前17位任意数字,最后一位可以是数字可以是大写或小写的x
复杂要求:按照身份证号码的格式严格要求。

package com.bjpowernode.test14;public class RegexDemo5 {public static void main(String[] args) {//用户名要求:大小写字母,数字,下划线一共4-16位String regex1 = "\\w{4,16}";System.out.println("zhangsan".matches(regex1));System.out.println("$123".matches(regex1));//身份证号码的简单校验://18位,前17位任意数字,最后一位可以是数字可以是大写或小写的xString regex2 = "[1-9]\\d{16}(\\d|x|X)";//或者写成  String regex2 = "[1-9]\\d{16}[\\dxX]";System.out.println("15040119810705387X".matches(regex2));//忽略大小写的书写方式//在匹配的时候忽略bc的大小写String regex3 = "a(?i)bc";System.out.println("aBC".matches(regex3));   //true}
}

5 总结

参考链接:

常用API-09-正则表达式初体验和基本规则_哔哩哔哩_bilibili

常用API-11-正则表达式基本练习2_哔哩哔哩_bilibili


http://www.hkcw.cn/article/HJIjaGpJhY.shtml

相关文章

【ArcGIS微课1000例】0147:Geographic Imager6.2下载安装教程

文章目录 一、软件功能二、下载地址三、安装教程Geographic Imager地图工具使Adobe Photoshop空间图像可以快速高效地工作。它增加了导入,编辑,操作和导出地理空间图像的工具,例如航空和卫星图像。Geographic Imager Mac功能非常强大,拥有栅格数据输出、投影信息修改、基于…

cf每日刷题c++

目录 Square Year&#xff08;800&#xff09; Not Quite a Palindromic String&#xff08;900&#xff09; Down with Brackets&#xff08;900&#xff09; Square Year&#xff08;800&#xff09; https://codeforces.com/problemset/problem/2114/A #include <iost…

天拓四方工业互联网平台赋能:地铁电力配电室综合监控与无人巡检,实现效益与影响的双重显著提升

随着城市化进程的不断加快&#xff0c;城市轨道交通作为缓解交通压力、提升出行效率的重要方式&#xff0c;在全国各大城市中得到了迅猛发展。地铁电力配电室作为核心供电设施&#xff0c;其基础设施的安全性、稳定性和智能化水平也面临更高要求。 本文将围绕“工业物联网平台…

直线模组在手术机器人中有哪些技术挑战?

手术机器人在现代医疗领域发挥着越来越重要的作用&#xff0c;直线模组作为其关键部件&#xff0c;对手术机器人的性能有着至关重要的影响。然而&#xff0c;在手术机器人中使用直线模组面临着诸多技术挑战&#xff0c;具体如下&#xff1a; 1、‌高精度要求‌&#xff1a;手术…

shell脚本的两种循环及状态返回值的区别及对比

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权并注明出处。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 一、shell中的两种循环命令 1. 两种循环的区别 shell循环中有两种循环&#xff1a;break、continue。break和contin…

【CATIA的二次开发15】根对象Application涉及基础控制与进程管理相关方法

在CATIA VBA开发中,对根对象Application涉及撤销和重做事务管理相关方法进行详细总结,并且用不同形式展示出来。供大家后续开发全面了解Application对象的方法,以便在开发过程中快速查找和使用: 一、Application常用方法分类 1、基础控制与进程管理(3个方法) 方法名功能…

CNEX防爆连接器Exe型3芯4芯5芯

CNEX防爆连接器Exe型作为工业安全领域的关键组件&#xff0c;其3芯、4芯、5芯等多规格设计满足了复杂工况下的电气连接需求。这类产品严格遵循GB3836.1-2010和IEC60079标准&#xff0c;适用于石油、化工、煤矿等存在爆炸性气体环境的场所。本文将深入解析其技术特性、选型要点及…

分布式锁和数据库锁完成接口幂等性

1、分布式锁 唯一主键与乐观锁的本质是使用了数据库的锁&#xff0c;但由于数据库锁的性能不太好&#xff0c;所以我们可使用Redis、Zookeeper等中间件来实现分布式锁的功能&#xff0c;以Redis为例实现幂等&#xff1a;当用户通过浏览器发起请求&#xff0c;服务端接收到请求…

​黑森林实验室推出 FLUX.1Kontext:可通过文本和参考图像对图像进行多次修改

今天我们激动地推出FLUX.1 Kontext——这是一套生成流匹配模型&#xff0c;可让您生成和编辑图像。与现有文生图模型不同&#xff0c;FLUX.1 Kontext系列实现了情境化图像生成功能&#xff0c;支持同时用文本和图像作为提示输入&#xff0c;并能无缝提取修改视觉概念&#xff0…

在React框架中使用Braft Editor集成Table表格的详细教程

简介&#xff1a;Braft Editor是一款基于draft-js开发的React富文本编辑器&#xff0c;支持多媒体、自定义样式和扩展功能。其表格扩展模块允许用户插入、调整表格结构&#xff0c;适合需要数据展示的场景&#xff08;如CMS系统、报表工具&#xff09;。 1.安装依赖 yarn add…

经营分析会,财务该怎么做?

目录 一、业绩洞察&#xff1a;从「现象描述」到「因果分析」 1.分层拆解 2.关联验证 3.根因追溯 二、预算管理&#xff1a;从「刚性控制」到「动态平衡」 1.分类管控 2.滚动校准 3.价值评估 三、客户与市场&#xff1a;从「交易记录」到「价值评估」 1.价值分层 2.…

yum安装nginx后无法通过服务方式启动

背景 在linux系统下&#xff0c;通过yum方式安装nginx后 通过nginx命令 nginx 可以启动nginx 但是作为测试或者生产服务器&#xff0c;我们需要配置开机自启动&#xff0c;这时候需要用服务方式启动 yum安装后的nginx 已经默认生成了服务启动方式的 nginx.service文件 按…

kuboard自带ETCD存储满了处理方案

一、前言 当运行 ETCD 日志报 Erro: mvcc database space exceeded 时&#xff0c;说明 ETCD 存储不足了&#xff08;默认 ETCD 存储是 2G&#xff09;&#xff0c;配额会触发告警&#xff0c;然后 Etcd 系统将进入操作受限的维护模式。 通过下面命令可以查看 ETCD 存储使用情…

『uniapp』添加桌面长按快捷操作 shortcuts(详细图文注释)

目录 手机环境适配说明安卓效果图代码 iOS(暂未实测,没有水果开发者)总结 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 手机环境适配说明 个别手机系统可能需要进行特别的权限设置,否则会无法使用 桌面快捷方式: 已知的有…

【目标检测】【ICCV 2021】条件式DETR实现快速训练收敛

Conditional DETR for Fast Training Convergence 条件式DETR实现快速训练收敛 代码链接 论文链接 摘要 最近提出的DETR方法将Transformer编码器-解码器架构应用于目标检测领域&#xff0c;并取得了显著性能。本文针对其训练收敛速度慢这一关键问题&#xff0c;提出了一种条…

Java线程:线程池详解(ThreadPoolExecutor构造器七个参数、线程池处理Runnable/Callable任务)

认识线程池 什么是线程池&#xff1f; 线程池就是一个可以复用线程的技术 不使用线程池的问题 用户每发起一个请求&#xff0c;后台就需要创建一个新线程来处理&#xff0c;下次新任务来了肯定又要创建新线程处理的&#xff0c;而创建新线程的开销是很大的&#xff0c;并且请求…

华为OD机试真题——开放日活动/取出尽量少的球(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 本文收录于专栏:《2025华为OD真题目录+全流程解析/备考攻略/经验分享》 华为OD机试真题《开放…

day14 leetcode-hot100-25(链表4)

141. 环形链表 - 力扣&#xff08;LeetCode&#xff09; 1.哈希集合 思路 将节点一个一个加入HashSet&#xff0c;并用contains判断是否存在之前有存储过的节点&#xff0c;如果有便是环&#xff0c;如果没有便不是环。 具体代码 /*** Definition for singly-linked list.*…

低碳理念在道路工程中的应用-预制路面

一、引子 在上一篇文章里&#xff0c;给大家介绍了预制基层的应用&#xff0c;有人提出&#xff0c;既然基层能够预制&#xff0c;那么&#xff0c;道路面层能不能预制呢&#xff0c;有没有相关的研究成果和应用实例呢&#xff1f;答案是肯定的&#xff0c;在本篇文章中&#x…

React---day5

4、React的组件化 组件的分类&#xff1a; 根据组件的定义方式&#xff0c;可以分为&#xff1a;函数组件(Functional Component )和类组件(Class Component)&#xff1b;根据组件内部是否有状态需要维护&#xff0c;可以分成&#xff1a;无状态组件(Stateless Component )和…