Java编程中通用的正则表达式(二)

news/2024/7/24 7:29:58 标签: 正则表达式, java

        正则表达式,又称正则式、规则表达式、正规表达式、正则模式或简称正则,是一种用来匹配字符串的工具。它是一种字符串模式的表示方法,可以用来检索、替换和验证文本。正则表达式是一个字符串,它描述了一些字符的组合,这些字符可以是字母、数字或者其他字符。在正则表达式中,我们可以使用特殊的语法和符号来表示某些字符或字符集合。正则表达式是一种强大且灵活的工具,可以在不同的编程语言和工具中使用,如Java、JavaScript、Python、Perl、PHP等。

1、匹配中文

        在Java中,可以使用Unicode范围来匹配中文字符。其中,汉字的Unicode编码范围为:[\u4e00-\u9fa5]。     

下面是一个例子,使用正则表达式判断一个字符串中是否包含中文字符:

java">String str = "Hello, 你好!";
String regex = "[\u4e00-\u9fa5]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
    System.out.println("包含中文字符");
} else {
    System.out.println("不包含中文字符");
}

        输出结果为:"包含中文字符"。

2、匹配身份证

        以下是Java中使用正则表达式判断身份证号的代码:

java">import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String idCard = "110101199003073197"; // 身份证号码
        String regex = "\\d{17}[\\d|x]|\\d{15}"; // 正则表达式

        if (Pattern.matches(regex, idCard)) {
            System.out.println("身份证号码格式正确");
        } else {
            System.out.println("身份证号码格式不正确");
        }
    }
}

        这里使用了Java中的正则表达式Pattern,使用matches方法判断字符串是否符合正则表达式正则表达式\\d{17}[\\d|x]|\\d{15}表示身份证号码可以是18位(最后一位可能是数字或字母x)或者是15位。其中,\\d表示匹配数字,x表示字母x。

3、匹配IP地址

        要判断一个字符串是否为IP地址,可以使用Java中的正则表达式。下面是一个示例代码:

java">public static boolean isIpAddress(String input) {
    String pattern = "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$";
    return input.matches(pattern);
}

        这个方法接收一个字符串参数,并返回一个布尔值。如果参数字符串满足IPv4地址格式,返回true;否则返回false。

        该正则表达式的含义是:以数字开头,由三个数字和一个点号组成的字符串重复四次。每个数字的范围为1到3位。点号需要转义。

例如,以下几个字符串都是合法的IPv4地址:

  • 192.168.0.1
  • 10.0.0.1
  • 172.16.0.1

而以下字符串不是IPv4地址:

  • 192.168.0.1000(其中1000超出了数字范围)
  • 10.0.0.01(前导零无效)

请注意,此方法只能判断IP地址的格式是否正确,而不能验证IP地址是否真正存在或是否可达。

4、屏蔽敏感词汇

        可以使用 Java 的正则表达式(Regular Expression)来过滤和替换文本中的特定字符或字符串。下面是一个示例代码,用于屏蔽敏感词汇:

java">import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexFilter {
    public static void main(String[] args) {
        String text = "你是一只小小鸟,飞呀飞不高,就算风雨无阻也要努力飞,因为你是小小鸟。";
        String[] sensitiveWords = {"小小鸟", "飞呀飞不高", "努力飞"};

        String patternString = String.join("|", sensitiveWords); // 构造正则表达式
        Pattern pattern = Pattern.compile(patternString); // 编译正则表达式
        Matcher matcher = pattern.matcher(text); // 匹配文本

        StringBuffer result = new StringBuffer(); // 用于存储过滤后的文本
        while (matcher.find()) {
            // 将匹配到的敏感词汇用"*"替换
            matcher.appendReplacement(result, "*".repeat(matcher.group().length()));
        }
        matcher.appendTail(result); // 将剩余文本添加到结果中

        System.out.println(result); // 输出结果(敏感词汇被屏蔽)
    }
}

在上面的代码中,可以通过修改 text 变量中的文本和 sensitiveWords 数组中的敏感词汇来测试不同的情况。另外,也可以调整正则表达式的构造方式和替换方式来实现更复杂的过滤和替换规则。

5、判断格式化时间

        在 Java 中,可以使用正则表达式来判断格式化时间是否符合指定的格式。下面是一个例子:

java">String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}";
String time = "2021-03-23 12:30:00";
if (time.matches(regex)) {
    System.out.println("时间格式正确");
} else {
    System.out.println("时间格式不正确");
}

上面的代码中,正则表达式 \\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2} 表示匹配以四位数字开头,后面跟着 -,两位数字,再后面跟着 -,两位数字,再后面跟着空格,两位数字,再后面跟着 :,两位数字,再后面跟着 :,两位数字的字符串。如果时间字符串符合这个格式,就会输出 时间格式正确,否则输出 时间格式不正确


http://www.niftyadmin.cn/n/5247606.html

相关文章

Python游戏测试工具自动化遍历游戏中所有关卡

场景 游戏里有很多关卡(可能有几百个了),理论上每次发布到外网前都要遍历各关卡看看会不会有异常,上次就有玩家在打某个关卡时卡住不动了,如果每个关卡要人工遍历这样做会非常的耗时,所以考虑用自动化的方…

解决“使用command+shift+a 总是弹出默认终端”

冲突出现的终端如下 问题原因 MacOS下使用IntelliJ 系列的IDE就是经常遇到这个问题,原因该快捷键与系统的 《在“终端”中搜索man页面索引 》功能的快捷键冲突了,Find Action是一个很高频使用的! 解决方案 把系统《在“终端”中搜索man…

Unity中Batching优化的GPU实例化(4)

文章目录 前言一、构建需要实例化的额外数据二、在顶点着色器,将实例化 ID 从 appdata 存入 v2f 传给片元着色器三、在片断着色器中访问具体的实例化变量三、使用代码修改Shader材质属性,实现GPU实例化后不同对象颜色不同的效果1、在C#测试脚本生成小板凳…

上网行为监控软件有哪些

上网行为监控软件是一种专门用于监控网络活动的工具,它可以记录员工或学生在计算机或移动设备上的网络行为,以帮助企业和家庭更好地管理网络使用情况。这种软件可以监控网页浏览、社交媒体活动、文件传输、即时通讯、在线视频和音频等行为。 上网行为监控…

Leetcode—2646.最小化旅行的价格总和【困难】

2023每日刷题&#xff08;五十三&#xff09; Leetcode—2646.最小化旅行的价格总和 算法思想 看灵神的 实现代码 class Solution { public:int minimumTotalPrice(int n, vector<vector<int>>& edges, vector<int>& price, vector<vector&l…

Error: Cannot find module ‘@npmcli/config‘ 最新解决办法

看了网上许多这个问题的小伙伴&#xff0c;都是降级node版本来解决的。但是降级并不是我想要的结果。 真正的解决办法就是更新nvm&#xff0c;将你的nvm升级到最新版本&#xff0c;然后卸载掉npm报错的node版本&#xff0c;重新安装即可使用。 解决办法&#xff1a;更新nvm

【开源】基于Vue.js的实验室耗材管理系统

文末获取源码&#xff0c;项目编号&#xff1a; S 081 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S081。} 文末获取源码&#xff0c;项目编号&#xff1a;S081。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗…

c# 中间件简说

一、什么是中间件 中间件是一种装配到应用管道以处理请求和响应的软件。是介于request与response处理过程之间的一个插件(一道处理过程)&#xff0c;相对比较轻量级&#xff0c;并且在全局上会影响到request对象和response对象的属性。因为改变的是全局&#xff0c;所以需要谨…