正则表达式入门及常用的正则表达式

news2025/3/15 15:49:41

正则表达式(Regular Expression,简称 Regex)是一种强大的文本处理工具,用于匹配、查找和替换字符串中的特定模式。以下是入门指南和常用正则表达式示例:


一、正则表达式入门

1. 基本语法
符号说明示例
.匹配任意单个字符(除换行符)a.c → “abc”、“a1c”
\d匹配数字(等价于 [0-9]\d\d → “12”、“99”
\w匹配字母、数字、下划线\w+ → “hello_123”
\s匹配空白字符(空格、制表符等)\s+ → 匹配连续空格
^匹配字符串开头^abc → 以 “abc” 开头
$匹配字符串结尾xyz$ → 以 “xyz” 结尾
^ / $字符串开始 / 结束^start / end$
[abc]匹配括号内的任意字符[aeiou] → 匹配元音字母
[^abc]匹配不在括号内的任意字符[^0-9] → 非数字字符
2. 量词
符号说明示例
*匹配前一个元素0次或多次a* → “”, “a”, “aaaa”
* / +匹配前一个元素 0次+/1次+(贪婪匹配)a+ → “a”, “aaa”
?匹配前一个元素0次或1次colou?r → “color”, “colour”
{n}匹配前一个元素恰好n次\d{4} → 4位数字(如年份)
{n,m}匹配前一个元素n到m次\d{3,5} → 3到5位数字
3. 分组与逻辑
符号说明示例
(abc)分组,捕获匹配的内容(ab)+ → “abab”
``逻辑“或”
(?:abc)非捕获分组(不保存匹配)`(?:http

二、常用正则表达式示例

1. 邮箱验证

  • 正则表达式

    ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
    
  • Java 代码:

    import java.util.regex.Pattern;
    public class EmailValidator {
        private static final String EMAIL_REGEX = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
        
        public static boolean validateEmail(String email) {
            return Pattern.matches(EMAIL_REGEX, email);
        }
    }
    

2. 手机号(中国大陆)

  • 正则表达式

    ^1[3-9]\d{9}$
    
  • Java 代码:

    public class PhoneValidator {
        private static final String PHONE_REGEX = "^1[3-9]\\d{9}$";
        
        public static boolean validatePhone(String phone) {
            return Pattern.matches(PHONE_REGEX, phone);
        }
    }
    

3. 日期(YYYY-MM-DD)

  • 正则表达式

    ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
    
  • Java 代码:

    public class DateValidator {
        private static final String DATE_REGEX = "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$";
        
        public static boolean validateDate(String date) {
            return Pattern.matches(DATE_REGEX, date);
        }
    }
    


4. 时间(HH:MM:SS)

  • 正则表达式

    ^([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$
    
  • Java 代码:

    public class TimeValidator {
        private static final String TIME_REGEX = "^([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$";
        
        public static boolean validateTime(String time) {
            return Pattern.matches(TIME_REGEX, time);
        }
    }
    

5. 提取URL中的域名

  • 正则表达式

    ^(https?|ftp)://([^/:]+)(:\d+)?(/.*)?$
    
  • Java 代码:

    public class UrlParser {
        private static final String URL_REGEX = "^(https?|ftp)://([^/:]+)(:\\d+)?(/.*)?$";
        
        public static String extractDomain(String url) {
            Pattern pattern = Pattern.compile(URL_REGEX);
            Matcher matcher = pattern.matcher(url);
            return matcher.find() ? matcher.group(2) : null;
        }
    }
    

6.中文汉字

  • 正则表达式

    ^[\u4e00-\u9fa5]+$  # 匹配纯中文字符
    
  • Java 代码:

    public class ChineseValidator {
        private static final String CHINESE_REGEX = "^[\u4e00-\u9fa5]+$";
        
        public static String extractChinese(String str) {
          Pattern pattern = Pattern.compile(CHINESE_REGEX);
          Matcher matcher = pattern.matcher(str);
          return matcher.find() ? matcher.group() : null;
      }
    }
    

7.IP地址(IPv4)

  • 正则表达式

    ^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$
    
  • Java 代码:

    public class IPValidator{
        private static final String IP_REGEX = "^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$";
        
      public static String validateIp(String str) {
          Pattern pattern = Pattern.compile(IP_REGEX);
          Matcher matcher = pattern.matcher(str);
          return matcher.find() ? matcher.group(): null;
      }
    }
    

8.密码长度(至少8位,包含字母和数字)

  • 正则表达式

     ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
    
  • Java 代码:

    public class PasswordLenValidator{
        private static final String IP_REGEX = "^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$";
        
      public static String validateIp(String str) {
          Pattern pattern = Pattern.compile(IP_REGEX);
          Matcher matcher = pattern.matcher(str);
          return matcher.find() ? matcher.group(): null;
      }
    }
    

三、正则表达式练习工具

  • Regex101:https://regex101.com
    • 支持多语言(Python、Java、JavaScript等),提供语法高亮和解释。
  • RegExr:https://regexr.com
    • 实时匹配测试,适合快速验证模式。
  • Debuggex:https://www.debuggex.com
    • 可视化正则表达式执行流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2315527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows下安装Git客户端

① 官网地址:https://git-scm.com/。 ② Git的优势 大部分操作在本地完成,不需要联网;完整性保证;尽可能添加数据而不是删除或修改数据;分支操作非常快捷流畅;与Linux 命令全面兼容。 ③ Git的安装 从官网…

SAP IBP for Supply Chain Certification Guide (Parag Bakde, Rishabh Gupta)

SAP IBP for Supply Chain Certification Guide (Parag Bakde, Rishabh Gupta)

如何处理PHP中的日期和时间问题

如何处理PHP中的日期和时间问题 在PHP开发中,日期和时间的处理是一个常见且重要的任务。无论是记录用户操作时间、生成时间戳,还是进行日期计算,PHP提供了丰富的函数和类来帮助开发者高效处理这些需求。本文将详细介绍如何在PHP中处理日期和…

TDengine 使用最佳实践

简介 阅读本文档需要具备的基础知识: Linux系统的基础知识,及基本命令网络基础知识:TCP/UDP、http、RESTful、域名解析、FQDN/hostname、hosts、防火墙、四层/七层负载均衡 本文档的阅读对象有:架构师、研发工程师,…

Spring、Spring Boot、Spring Cloud 的区别与联系

1. Spring 框架 定位:轻量级的企业级应用开发框架,核心是 IoC(控制反转) 和 AOP(面向切面编程)。 核心功能: 依赖注入(DI):通过 Autowired、Component 等注解…

AutoGen-构建问答智能体

概述 如https://github.com/microsoft/autogen所述,autogen是一多智能体的框架,属于微软旗下的产品。 依靠AutoGen我们可以快速构建出一个多智能体应用,以满足我们各种业务场景。 环境说明 python,3.10AutoGen,0.4.2…

C语言实现括号匹配检查及栈的应用详解

目录 栈数据结构简介 C语言实现栈 栈的初始化 栈的销毁 栈的插入 栈的删除 栈的判空 获取栈顶数据 利用栈实现括号匹配检查 总结 在编程中,经常会遇到需要检查括号是否匹配的问题,比如在编译器中检查代码的语法正确性,或者在…

阿里云魔笔低代码应用开发平台快速搭建教程

AI低代码,大模型时代应用开发新范式 什么是魔笔 介绍什么是魔笔低代码应用开发平台。 魔笔是一款面向全端(Web、H5、全平台小程序、App)场景的模型驱动低代码开发平台,提供一站式的应用全生命周期管理,包括可视化开发…

A Survey on Mixture of Experts 混合专家模型综述(第二部分:混合专家系统设计)

A Survey on Mixture of Experts 混合专家模型综述 (第一部分:混合专家算法设计) A Survey on Mixture of Experts arxiv github:A-Survey-on-Mixture-of-Experts-in-LLMs ​ ​ ​ 5 System Design of Mixture of Experts While ​Mixture of Exper…

docker python:latest镜像 允许ssh远程

跳转到家目录 cd创建pythonsshdockerfile mkdir pythonsshdockerfile跳转pythonsshdockerfile cd pythonsshdockerfile创建Dockerfile文件 vim Dockerfile将Dockerfile的指令复制到文件中 # 使用 python:latest 作为基础镜像 # 如果我的镜像列表中没有python:latest镜像&…

Aim Robotics电动胶枪:机器人涂胶点胶的高效解决方案

在自动化和智能制造领域,机器人技术的应用越来越广泛,而涂胶和点胶作为生产过程中的重要环节,也逐渐实现了自动化和智能化。Aim Robotics作为一家专注于机器人技术的公司,其推出的电动胶枪为这一领域带来了高效、灵活且易于操作的…

【HDLbits--分支预测器简单实现】

HDLbits--分支预测器简单实现 1 timer2.branche predicitors3.Branch history shift4.Branch direction predictor 以下是分支预测器的简单其实现; 1 timer 实现一个计时器,当load1’b1时,加载data进去,当load1’b0时进行倒计时&…

Linux--操作系统/进程

ok,我们今天学习linux中的操作系统和进程 1. 冯诺依曼体系 我们常⻅的计算机,如笔记本。我们不常⻅的计算机,如服务器,⼤部分都遵守冯诺依曼体系。 内存是CPU和外设之间的一个巨大的缓存! 截⾄⽬前,我们…

Java面试八股—Redis篇

一、Redis的使用场景 (一)缓存 1.Redis使用场景缓存 场景:缓存热点数据(如用户信息、商品详情),减少数据库访问压力,提升响应速度。 2.缓存穿透 正常的访问是:根据ID查询文章&…

Web后端开发之Maven

Maven Mven是apache旗下的一个开源项目,用来管理和构建java项目的工具。 通过一小段描述信息来管理项目。 Maven的作用 1.依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题 以前用某个jar包需要下载…

there are no enabled repos

我做了两个操作 第一个操作: 1.先在本地电脑,也就是在我们电脑的桌面上下载 https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo 2.在CentOS 创建etc文件夹 3在etc文件夹内创建yum.repos.d文件夹 4.将下载好的repo 黏贴到yum.repos.d…

OpenEuler-22.03-LTS上利用Ansible轻松部署MySQL 5.7

一、需求 使用ansible自动化部署mysql二进制部署mysql部署mysql并创建JDBC用户 二、环境信息 本文涉及的代码,配置文件地址: 链接:百度网盘 请输入提取码 提取码:1g6y 软件名称版本备注Ansible2.9.27All modules — Ansible Doc…

前端无限滚动内容自动回收技术详解:原理、实现与优化

文章目录 一、核心需求与技术挑战1.1 无限滚动的问题症结1.2 自动回收的三大目标 二、技术实现原理2.1 虚拟滚动核心机制2.2 关键技术指标 三、完整实现方案3.1 基础HTML结构3.2 CSS关键样式3.3 JavaScript核心逻辑3.3.1 滚动控制器3.3.2 动态尺寸处理 四、性能优化策略4.1 内存…

如何在Ubuntu上构建编译LLVM和ISPC,以及Ubuntu上ISPC的使用方法

之前一直在 Mac 上使用 ISPC,奈何核心/线程太少了。最近想在 Ubuntu 上搞搞,但是 snap 安装的 ISPC不知道为什么只能单核,很奇怪,就想着编译一下,需要 Clang 和 LLVM。但是 Ubuntu 很搞,他的很多软件版本是…

【MySQL】表的约束(上)

文章目录 表的约束什么是表的约束空属性默认值列描述(comment)零填充(zerofill)主键 总结 表的约束 什么是表的约束 表的约束(Constraints)是数据库表中的规则,用于限制存储的数据&#xff0c…