正则表达式

文章目录

正则表达式

正则表达式(Regular Expression,简称Regex或RegExp)是一种对字符串操作的一种逻辑公式,它是用事先定义好的一些特定字符以及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。正则表达式主要用于字符串的验证、搜索和替换。
1.正则表达式的组成

正则表达式由普通字符(如a到z的字母)和特殊字符(称为"元字符")组成。元字符在正则表达式中具有特殊的含义,用于表示位置、重复、选择等。
2.元字符介绍

字符匹配

.:匹配除换行符以外的任意单个字符。

[...]:字符集合,匹配方括号内的任意字符。例如,[abc]匹配a、b或c。

[^...]:否定的字符集合,匹配不在方括号内的任意字符。

位置指定

^:匹配输入字符串的开始位置。
KaTeX parse error: Undefined control sequence: \b at position 16: :匹配输入字符串的结束位置。 \̲b̲:匹配一个单词边界,即单词的开...:匹配整个字符串为5到12位数字。

匹配IP地址:

((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

匹配电话号码:

(?0\d{2}[) -]?\d{8}
4、正则表达式的使用

正则表达式在不同的编程语言中有不同的实现方式,但基本原理相同。以下是在一些常见编程语言中使用正则表达式的简单示例:

JavaScript:
let regex = /^\d{5,12}$/;  
let result = regex.test("12345678901"); // true
Python:

import re  
pattern = re.compile(r'^\d{5,12}$')  
result = pattern.match("12345678901")  
if result:  
    print("Match")
Java:
String regex = "^\\d{5,12}$";  
boolean result = "12345678901".matches(regex); // true

正则表达式是一个功能强大的工具,能够处理复杂的文本匹配问题。然而,由于其语法较为复杂,对于初学者来说可能需要一定的时间来掌握。

常见应用

搜索文本:在文本中查找符合特定模式的子字符串。

文本替换:根据正则表达式匹配结果替换文本。

输入验证:验证输入是否符合特定格式,如邮箱、电话号码等。

数据提取:从文本中提取特定模式的数据。

Java中常用的正则

在Java中,正则表达式(Regular Expressions)是一种强大的文本处理工具,它允许你通过指定模式来匹配、搜索、替换文本。Java的java.util.regex包提供了对正则表达式的支持,主要类有Pattern和Matcher。

以下是一些常用的正则表达式示例,这些示例涵盖了常见的文本处理需求:

匹配电子邮件地址:

\b[A-Za-z0-9._%±]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b

匹配URL:

https?😕/(?:[-\w\.]|(?:%[\da-fA-F]{2}))+

匹配IP地址(IPv4):

((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

匹配手机号码(以中国大陆11位手机号为例):

^1[3-9]\d{9}$

匹配身份证号码(中国大陆18位身份证号码):
^1^\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[\dXx]$

匹配整数:

-?\d+

匹配浮点数(包括正数、负数和小数):

-?\d+(\.\d+)?

匹配中文字符:

[\u4e00-\u9fa5]

匹配由数字和字母组成的字符串:

[A-Za-z0-9]+

匹配HTML标签:

<([a-z]+)([^<]+)(?:>(. )</\1>|\s*\/>)

请注意,正则表达式的编写依赖于你的具体需求,上述示例可能需要根据实际情况进行调整。

在Java中使用这些正则表达式时,你通常会首先使用Pattern.compile(String regex)方法编译正则表达式,然后使用matcher(CharSequence input)方法创建一个Matcher对象,最后使用Matcher对象的方法来执行匹配、查找等操作。例如:

String email = "example@example.com";  
String emailRegex = "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b";  
Pattern pattern = Pattern.compile(emailRegex);  
Matcher matcher = pattern.matcher(email);  
boolean isEmail = matcher.matches(); // 判断是否匹配

RegexUtils

import java.util.regex.Pattern;

/**
 * 正则工具类
 *
 * @author jjee
 */
public class RegexUtils {
    /**
     * 校验正则表达式是否合法
     */
    public static boolean checkRegx(String regx) {
        try {
            Pattern.compile(regx);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * 判断是否为整数
     * @param str 传入的字符串
     * @return 是整数返回true,否则返回false
     */
    public static boolean isInteger(String str) {

        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");

        return pattern.matcher(str).matches();

    }

    //正则表达式判断字符串是否仅含有数字和字母和中文
    public static boolean isLetterDigit(String str) {
        String regex = "^[\\u4e00-\\u9fa50-9a-zA-Z]+$";
        return str.matches(regex);
    }

    //正则表达式判断字符串是否仅英文字符
    public static boolean isAandZ(String str) {
        String regex = "^[a-zA-Z]*";
        return str.matches(regex);
    }

    //正则表达式判断字符串是否仅含有数字和字母
    public static boolean isAandZandNum(String str) {
        String regex = "^[0-9a-zA-Z]+$";
        return str.matches(regex);
    }

}

  1. 1-9 ↩︎
相关推荐
hanbarger7 分钟前
mybatis框架——缓存,分页
java·spring·mybatis
cdut_suye15 分钟前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
苹果醋327 分钟前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
小蜗牛慢慢爬行28 分钟前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
azhou的代码园31 分钟前
基于JAVA+SpringBoot+Vue的制造装备物联及生产管理ERP系统
java·spring boot·制造
wm10431 小时前
java web springboot
java·spring boot·后端
smile-yan1 小时前
Provides transitive vulnerable dependency maven 提示依赖存在漏洞问题的解决方法
java·maven
老马啸西风1 小时前
NLP 中文拼写检测纠正论文-01-介绍了SIGHAN 2015 包括任务描述,数据准备, 绩效指标和评估结果
java
Earnest~1 小时前
Maven极简安装&配置-241223
java·maven
皮蛋很白1 小时前
Maven 环境变量 MAVEN_HOME 和 M2_HOME 区别以及 IDEA 修改 Maven repository 路径全局
java·maven·intellij-idea