Java正则表达式详解及实用案例(附详细代码)

 更新时间:2024年11月23日 10:02:09   作者:高锰酸钾_  
正则表达式是一种强大的字符串处理工具,用于匹配和解析文本,这篇文章主要给大家介绍了关于Java正则表达式详解及实用案例的相关资料,本文通过代码示例讲解了正则表达式的基本语法规则,包括字符类、预定义字符类和数量词,需要的朋友可以参考下

前言

正则表达式是一种强大的工具,用于处理字符串匹配和文本解析。在这篇博客中,我们将通过代码示例,详细讲解正则表达式的基本语法规则以及在Java中的实际应用

什么是正则表达式?

正则表达式(Regular Expression)是一种用来描述字符模式的规则。它可以用来验证字符串是否符合规则,或者从一段文本中提取特定的子字符串

正则表达式的典型应用:

  • 字符串校验(如校验手机号码、邮箱地址等)
  • 文本搜索与替换
  • 数据解析

Java 正则表达式的基本用法

在Java中,PatternMatcher类是处理正则表达式的核心。以下是几个关键概念和用法:

(1) 字符类

字符类用来匹配特定范围内的字符。以下是常见的字符类:

表达式描述
[abc]匹配 ab 或 c
[^abc]匹配除 ab 和 c 以外的字符
[a-zA-Z]匹配任意大小写英文字母
[a-d[m-p]]匹配 a-d 或 m-p 范围内的字符
[a-z&&[^bc]]匹配 a-z 中除了 b 和 c 的字符

代码示例:

System.out.println("a".matches("[abc]")); // true
System.out.println("z".matches("[abc]")); // false
System.out.println("bc".matches("[abc][abc]")); // true

(2) 预定义字符类

预定义字符类是字符类的简化写法,用来匹配常见的字符类型

表达式描述
.匹配任意字符
\d匹配数字,等价于 [0-9]
\D匹配非数字,等价于 [^0-9]
\s匹配空白字符
\S匹配非空白字符
\w匹配字母、数字、下划线,等价于 [a-zA-Z0-9_]
\W匹配非字母、数字、下划线

代码示例:

System.out.println("123".matches("\\d+")); // true
System.out.println("@".matches("\\w"));    // false
System.out.println("abc_123".matches("\\w+")); // true

(3) 数量词

数量词用来指定字符出现的次数

表达式描述
X?匹配 X 0 次或 1 次
X*匹配 X 0 次或多次
X+匹配 X 1 次或多次
X{n}匹配 X 恰好出现 n 次
X{n,}匹配 X 至少出现 n 次
X{n,m}匹配 X 至少出现 n 次但不超过 m 次

代码示例:

System.out.println("123456789".matches("\\d{9}")); // true
System.out.println("123".matches("\\d{1,5}"));    // true

正则表达式实际应用

(1) 校验规则

校验QQ号

规则:6-20位数字,不能以 0 开头

String qq = "12345678987";
System.out.println(qq.matches("[1-9]\\d{5,19}")); // true

校验手机号码

规则:以 1 开头,第二位是 3-9,后面跟 9 位数字

String phone = "13933447894";
System.out.println(phone.matches("1[3-9]\\d{9}")); // true

校验邮箱地址

规则:用户名部分允许字母、数字、下划线,域名部分允许字母和数字,支持多级后缀

String email = "gaomengsuanjia@163.com";
System.out.println(email.matches("\\w+([-+.']\\w+)*@[a-zA-Z0-9]+(\\.[a-zA-Z]{2,})+")); // true

校验座机号码

规则:开头以 0,后接 2-3 位区号,支持带或不带连字符

String tel = "020-5698137";
System.out.println(tel.matches("0\\d{2,3}-?[1-9]\\d{4,9}")); // true

(2) 文本查找

利用 Pattern 和 Matcher 可以在大段文本中找到符合条件的子串

查找包含版本号的 Java 关键字

String text = "java8和java11是长期支持版本,下一个是java17。";
Pattern pattern = Pattern.compile("java\\d{0,2}");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
    System.out.println(matcher.group());
}
// 输出:java8、java11、java17

通过以上代码示例和解释,我们了解了正则表达式的基本规则及在Java中的应用方式。正则表达式作为字符串处理的利器,可以极大提高开发效率。在实际项目中,我们可以利用正则表达式解决各种文本匹配和校验问题

最后,为了帮助大家复习正则表达式,可以玩一个小游戏

总结 

到此这篇关于Java正则表达式详解及实用案例的文章就介绍到这了,更多相关Java正则表达式实用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中解决跨域问题的方法汇总(建议收藏)

    Java中解决跨域问题的方法汇总(建议收藏)

    我们在开发过程中经常会遇到前后端分离而导致的跨域问题,导致无法获取返回结果,下面给大家介绍Java中解决跨域问题的方法汇总,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • SpringDataJPA实体类关系映射配置方式

    SpringDataJPA实体类关系映射配置方式

    这篇文章主要介绍了SpringDataJPA实体类关系映射配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • IDEA创建Gradle项目然后删除报错问题及解决

    IDEA创建Gradle项目然后删除报错问题及解决

    这篇文章主要介绍了IDEA创建Gradle项目然后删除报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • Java使用Apache Batik实现将SVG转换为PNG

    Java使用Apache Batik实现将SVG转换为PNG

    在项目中经常需要将 SVG 图标或图形转换为 PNG 格式,Apache Batik 是一个强大的 SVG 处理库,可以轻松实现 SVG → PNG 的转换,下面我们就来看看具体实现方法吧
    2026-01-01
  • 详解SpringBoot统一响应体解决方案

    详解SpringBoot统一响应体解决方案

    这篇文章主要介绍了详解SpringBoot统一响应体解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • SpringBoot集成jersey打包jar找不到class的处理方法

    SpringBoot集成jersey打包jar找不到class的处理方法

    这篇文章主要介绍了SpringBoot集成jersey打包jar找不到class的处理方法,文中通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • Spring Cloud Gateway内置的断言和过滤器作用说明

    Spring Cloud Gateway内置的断言和过滤器作用说明

    这篇文章主要介绍了Spring Cloud Gateway内置的断言和过滤器作用说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • SpringBoot下无节制和数据库建立连接的问题及解决方法

    SpringBoot下无节制和数据库建立连接的问题及解决方法

    本文介绍了无节制建立MySQL连接的危害,包括数据库服务端资源耗尽、应用端性能劣化和监控与运维困境,提出了系统性解决方案,包括连接池标准化配置、代码规范与防御式编程、全链路监控体系和架构级优化,感兴趣的朋友一起看看吧
    2025-03-03
  • mybatis group by substr函数传参报错的解决

    mybatis group by substr函数传参报错的解决

    这篇文章主要介绍了mybatis group by substr函数传参报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • SpringBoot应用优雅停机的3种标准方案

    SpringBoot应用优雅停机的3种标准方案

    所谓优雅停机(Graceful Shutdown),就是让应用在关闭前停止接收新请求;把正在处理的请求执行完;释放线程池、连接池、MQ 消费者等资源;最后再安全退出,今天讲清楚 SpringBoot优雅停机的3种标准方案,生产直接抄配置,需要的朋友可以参考下
    2026-03-03

最新评论