当前位置: 首页 > news >正文

java 正则表达式大全

Java 正则表达式是处理字符串匹配、查找、替换的强大工具,以下是常用的正则表达式语法、示例及使用场景总结:

一、基础语法

元字符描述
.匹配任意单个字符(除换行符 \n
*匹配前一个字符 0 次或多次
+匹配前一个字符 1 次或多次
?匹配前一个字符 0 次或 1 次
^匹配字符串开头
$匹配字符串结尾
[]字符集,匹配其中任意一个字符(如 [abc] 匹配 a、b 或 c)
[^]否定字符集,匹配不在其中的字符(如 [^abc] 匹配非 a、b、c 的字符)
``分支条件,匹配左边或右边的表达式(如 `ab` 匹配 a 或 b)
()捕获组,将表达式分组,可通过 group(n) 获取匹配结果
\转义字符,匹配特殊字符(如 \. 匹配 .

二、预定义字符类

表达式描述
\d匹配数字(等价于 [0-9]
\D匹配非数字(等价于 [^0-9]
\w匹配字母、数字、下划线(等价于 [a-zA-Z0-9_]
\W匹配非字母、数字、下划线(等价于 [^a-zA-Z0-9_]
\s匹配空白字符(空格、制表符 \t、换行符 \n 等)
\S匹配非空白字符
\b单词边界(如 \bword\b 匹配独立的 "word")
\B非单词边界

三、量词

表达式描述
{n}匹配前一个字符恰好 n 次(如 a{3} 匹配 "aaa")
{n,}匹配前一个字符至少 n 次(如 a{2,} 匹配 "aa"、"aaa" 等)
{n,m}匹配前一个字符 n 到 m 次(如 a{1,3} 匹配 "a"、"aa"、"aaa")
*?非贪婪匹配(尽可能少匹配,如 a.*?b 匹配 "aab" 中的 "aab" 而非更长的)
+???{n,m}?同理,非贪婪模式的其他量词

四、常用场景示例

1. 校验数字
  • 整数:^-?\d+$(支持正负整数)
  • 正整数:^[1-9]\d*$
  • 浮点数:^-?\d+(\.\d+)?$(支持正负小数)
  • 保留 2 位小数:^-?\d+(\.\d{2})?$
2. 校验字符串
  • 仅字母:^[a-zA-Z]+$
  • 字母 + 数字:^[a-zA-Z0-9]+$
  • 中文:^[\u4e00-\u9fa5]+$(匹配纯中文)
  • 字母 + 数字 + 下划线:^\w+$
3. 校验日期 / 时间
  • 日期(yyyy-mm-dd):^\d{4}-\d{2}-\d{2}$(简单校验,未验证合法性)
  • 时间(hh:mm:ss):^\d{2}:\d{2}:\d{2}$
4. 校验手机号 / 邮箱
  • 手机号(中国大陆):^1[3-9]\d{9}$
  • 邮箱:^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
5. 校验 URL
  • 简单 URL:^https?://[^\s]+$(匹配 http/https 开头的 URL)
6. 提取 / 替换
  • 提取 HTML 标签内容:<(\w+)>(.*?)</\1>(通过组提取标签名和内容)
  • 替换空格:str.replaceAll("\\s+", "")(去除所有空白字符)

五、Java 中使用正则的核心类

1.Pattern:编译正则表达式为模式对象(线程安全)。

Pattern pattern = Pattern.compile("\\d+"); // 编译正则

2.Matcher:匹配器,用于对字符串执行匹配操作。

Matcher matcher = pattern.matcher("abc123def");
boolean found = matcher.find(); // 是否找到匹配
String group = matcher.group(); // 获取匹配的内容(需先调用 find()/matches())

3. 常用方法

  • matches():全字符串匹配(等价于正则前后加 ^$)。
  • find():查找字符串中是否有匹配的子串。
  • replaceAll(String replacement):替换所有匹配的子串。

六、注意事项

  • Java 字符串中 \ 需转义为 \\(如正则 \d 在 Java 中写为 \\d)。
  • 贪婪模式 vs 非贪婪模式:默认是贪婪模式(尽可能多匹配),加 ? 切换为非贪婪。
  • 性能:复杂正则可能影响性能,避免过度使用嵌套或通配符(如 .*)。

以上涵盖了 Java 正则的核心语法和常见场景,实际使用时可根据需求组合调整。

http://www.dtcms.com/a/583593.html

相关文章:

  • 68Design一样设计网站今天重庆新闻
  • 嘉兴网站设计999 999公司建设网站需要固定ip吗
  • 网站商城方案江苏建设工程交易中心网站
  • 湖南网站建设报价微信小游戏开发
  • CF Weakness and Poorness(三分查找+最大子段和)
  • 建设网站找什么传媒公司运营是干嘛的
  • 网站建设是属于软件吗百度推广就是做网站吧
  • 佛山市网站建设系统沈阳建设工程信息网 找到中项网
  • 网站如何添加数据wordpress匿名评论插件
  • 做减肥餐的网站网站建设的开票编码
  • 做外贸的有哪些网站有哪些注册公司需要多少资金
  • 网站互动方式为WordPress添加虚拟用户
  • 离石做网站株洲建设公司网站
  • 芯伯乐700mA线性稳压器XBLW L78M05H/L78M12H:稳定可靠,简化电源设计
  • 莒县建设局网站wordpress 文章 页面
  • 佛山网站建设及推广服务公司百度seo营销
  • 网站建设教学廊坊只做山寨的网站
  • 电力系统小样本学习驱动的设备故障诊断方法优化
  • 11111
  • Claude 编程实战:从零到一构建“AI 驱动的待办清单”Web App
  • 建站技术python编程下载
  • 临沂网站建设服务商网站幻灯片 按纽
  • 正规网站建设制作中国互联网金融协会投诉电话
  • 母婴设计网站贵州省城乡与建设厅网站
  • 给自己的公司做网站怎么做好长沙网络优化产品
  • 怎么用centos做网站门户网站建设情况自查报告
  • Photoshop图像合成基础
  • 【算法】求二叉树的层序遍历
  • 做网站浏览器必须用xp系统吗wordpress自定义应用
  • 怎么建设商业网站广东h5网站建设