Java正则校验:从入门到实战

在Java中,正则表达式是一种强大的工具,用来校验和处理字符串数据。这篇文章将从入门到实战的角度,介绍Java正则表达式的基础知识和实用技巧。

一、正则表达式基础

正则表达式是一个由字符和操作符组成的模式,用来描述文本中的字串筛选规则。在Java中,可以使用java.util.regex包中的类来处理正则表达式。

1.字符匹配

String pattern = "abc";//匹配abc字符串
String str = "abc";//要匹配的字符串
System.out.println(str.matches(pattern));//true

2.字符集合

String pattern = "[abc]";//匹配a、b或c单个字符
String str = "a";//要匹配的字符串
System.out.println(str.matches(pattern));//true

3.字符数量

String pattern = "a{3}";//匹配3个a字符
String str = "aaa";//要匹配的字符串
System.out.println(str.matches(pattern));//true

pattern = "a{2,}";//匹配2个或以上a字符
str = "aaa";//要匹配的字符串
System.out.println(str.matches(pattern));//true

pattern = "a{2,4}";//匹配2个到4个a字符
str = "aaa";//要匹配的字符串
System.out.println(str.matches(pattern));//true

4.特殊字符

String pattern = "\\d";//匹配数字字符
String str = "1";//要匹配的字符串
System.out.println(str.matches(pattern));//true

pattern = "\\D";//匹配非数字字符
str = "a";//要匹配的字符串
System.out.println(str.matches(pattern));//true

pattern = "\\s";//匹配空白字符
str = " ";//要匹配的字符串
System.out.println(str.matches(pattern));//true

pattern = "\\S";//匹配非空白字符
str = "a";//要匹配的字符串
System.out.println(str.matches(pattern));//true

pattern = "\\w";//匹配字母数字字符
str = "a";//要匹配的字符串
System.out.println(str.matches(pattern));//true

pattern = "\\W";//匹配非字母数字字符
str = "!";//要匹配的字符串
System.out.println(str.matches(pattern));//true

二、实际应用场景

在Java开发中,正则表达式可以用于以下实际应用场景:

1.校验用户输入

//检查邮箱格式
String pattern = "[a-zA-Z0-9_-]+@[a-zA-Z0-9]+\\.[a-zA-Z]+";
String email = "abc@test.com";
System.out.println(email.matches(pattern));//true

//检查手机号格式
pattern = "1[3456789]\\d{9}";
String phone = "13712345678";
System.out.println(phone.matches(pattern));//true

//检查身份证号格式
pattern = "[1-9]\\d{5}(18|19|20)\\d{2}(0\\d|1[012])(0\\d|[12]\\d|3[01])\\d{3}[Xx\\d]";
String idCard = "310101199001010101";
System.out.println(idCard.matches(pattern));//true

2.替换特定字符

String pattern = "";//剔除HTML标签
String html = "

这是一段测试文本

"; System.out.println(html.replaceAll(pattern, ""));//这是一段测试文本 pattern = "(\\d{4})-(\\d{2})-(\\d{2})";//格式化日期字符串 String date = "20210101"; String result = date.replaceAll(pattern, "$1年$2月$3日"); System.out.println(result);//2021年01月01日

3.提取关键信息

String pattern = "(?<=\\()[^)\\s]+(?=\\))";//提取括号内的内容
String str = "这是一段(括号内的)测试文本";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(str);
if (m.find()) {
    System.out.println(m.group(0));//括号内的
}

pattern = "(?=.*[a-zA-Z])(?=.*\\d)[^\\s]{8,16}";//匹配至少8个字符,并包含至少一个字母和一个数字
String password = "password1";
System.out.println(password.matches(pattern));//true

三、实战练习

接下来,带大家完成一个实际练习,校验手机号码归属地。

1.获取手机号码前7位

String phone = "13712345678";
String areaCode = phone.substring(0, 7);
System.out.println(areaCode);//1371234

2.请求接口

String url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=";
String response = HttpUtil.get(url + areaCode);
System.out.println(response);//{"mts":"1370000-1399999","province":"广东","catName":"中国移动","telString":"1371234"}

3.使用正则表达式提取信息

String pattern = "(?<=province\":\")[^\"]+(?=\")";//提取省份信息
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(response);
if (m.find()) {
    System.out.println("所在省份:" + m.group(0));//所在省份:广东
}

pattern = "(?<=catName\":\")[^\"]+(?=\")";//提取运营商信息
r = Pattern.compile(pattern);
m = r.matcher(response);
if (m.find()) {
    System.out.println("运营商:" + m.group(0));//运营商:中国移动
}

通过手机号码前7位,使用正则表达式校验手机号码归属地,并获取相关信息。

原创文章,作者:WLYO,如若转载,请注明出处:https://www.506064.com/n/141337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
WLYOWLYO
上一篇 2024-10-04 00:18
下一篇 2024-10-04 00:18

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Python wordcloud入门指南

    如何在Python中使用wordcloud库生成文字云? 一、安装和导入wordcloud库 在使用wordcloud前,需要保证库已经安装并导入: !pip install wo…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Python小波分解入门指南

    本文将介绍Python小波分解的概念、基本原理和实现方法,帮助初学者掌握相关技能。 一、小波变换概述 小波分解是一种广泛应用于数字信号处理和图像处理的方法,可以将信号分解成多个具有…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29

发表回复

登录后才能评论