当前位置: 首页 > news >正文

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

正则表达式(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
    • 可视化正则表达式执行流程。

相关文章:

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

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

大白话如何在 Vue 项目中进行路由懒加载?

大白话如何在 Vue 项目中进行路由懒加载? 在 Vue 项目里,路由懒加载是种很实用的技术,它能让你在需要的时候再去加载对应的路由组件,而不是在项目启动时就把所有组件都加载进来,这样能加快项目的启动速度。下面就详细…...

手动实现一个RTTI系统

在 C 中,RTTI(Runtime Type Information,运行时类型信息)是一组允许程序在运行时获取对象类型信息的机制 。虽然C通过虚接口的方式提供了良好的抽象,但是对于一个复杂的系统,过于依赖抽象而忽略业务的复杂性…...

智能化水利监管:无人机视频在违章行为识别中的应用

随着我国经济社会的快速发展,水利工程建设规模不断扩大,但随之而来的违章建设行为也日益增多。传统的人工巡查方式效率低下,难以满足当前监管需求。无人机技术以其灵活性和高效性,为水利工程建设监管提供了新的解决方案。本文将探…...

力扣练习之确定两个字符串是否接近

目录 题目: 题解: 详细题解 题目: 如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 : 操作 1:交换任意两个 现有 字符。 例如,abcde -> aecdb 操作 2&#xff1…...

Word 小黑第21套

对应大猫22 设置表格为页面的80%:表布局 -属性 -表格 指定宽度80% 度量单位改成百分比 段落组 -中文版式 在表格上下方留一行空段(如果表格太大改一下样式)插入横线 边框线 (右击横线 -图片 修改样式) 段落 -取消对于…...

mingw32编译ffmpeg

ffmpeg https://gitee.com/mirrors/ffmpeg.git 使用msys2的mingw32 pacman -S mingw-w64-x86_64-toolchain compile ./confiure --enable-static --disable-shared --enable-gpl --target-oswin32 mingw32-make -j4 提示编译错误,msys2里面的路径是/d/tools/msys2…...

设计模式C++

针对一些经典的常见的场景, 给定了一些对应的解决方案,这个就叫设计模式。 设计模式的作用:使代码的可重用性高,可读性强,灵活性好,可维护性强。 设计原则: 单一职责原则:一个类只做一方面的…...

使用 Excel 实现绩效看板的自动化

引言 在日常工作中,团队的绩效监控和管理是确保项目顺利进行的重要环节。然而,面临着以下问题: ​数据分散:系统中的数据难以汇总,缺乏一个宏观的团队执行情况视图。​看板缺失:系统本身可能无法提供合适…...

ngx_openssl_conf_t

ngx_openssl_conf_t 定义在 src\event\ngx_event_openssl.c typedef struct {ngx_uint_t engine; /* unsigned engine:1; */ } ngx_openssl_conf_t; 1. 这个结构体的目的是存储与 OpenSSL 引擎相关的配置信息。 2. engine 字段用于标识是否启用 OpenSSL 的硬件加速引擎…...

深度学习环境配置指令大全

文章目录 环境配置官网/博客合集清华镜像站anaconda官网pytorch官网pytorch历史库官网pytorch与cuda对应版本下载博客torch与torchvision与python对应关系python与pytorch对应关系 环境相关创建环境激活环境退出环境删除环境检查环境冲突 安装相关安装requirementsconda安装con…...

Netty启动源码NioEventLoop剖析accept剖析read剖析write剖析

学习链接 NIO&Netty - 专栏 Netty核心技术十–Netty 核心源码剖析Netty核心技术九–TCP 粘包和拆包及解决方案Netty核心技术七–Google ProtobufNetty核心技术六–Netty核心模块组件Netty核心技术五–Netty高性能架构设计 聊聊Netty那些事儿 - 专栏 一文搞懂Netty发送数…...

<03.13>八股文补充知识

import java.lang.reflect.*; public class Main {public static void main(String[] args) throws Exception {// 获取 Class 对象//1. 通过类字面量Class<?> clazz Person.class;//2 通过对象实例化String str "Hello";Class<?> clazz_str str.ge…...

[HUBUCTF 2022 新生赛]messy_traffic

下载附件 看到文件类型直接用wireshark打开&#xff0c;对MySQL协议进行追踪流&#xff0c;并没有什么发现&#xff0c;后面对NO.437发现有用信息&#xff0c;http追踪流 发现**system(‘cat passwd.txt’);**这里是在打开查看passwd.txt&#xff0c;密码是"SignUpForHUBU…...

条款1:理解模版性别推导

目录 问题引出 情况1&#xff1a;ParamType是个指针或引用&#xff0c;但不是个万能引用。 情况2&#xff1a;ParamType是个万能引用 情况3&#xff1a;ParamType既非指针也非引用 问题引出 函数模板大致形如&#xff1a; template<typename T> void f(ParamType p…...

kafka连问

1&#xff0c;kafka多消费者指部署多个服务消费节点吗 2&#xff0c;多个消费节点自动组成消费组吗 3&#xff0c;消费者组与多消费节点关系 4&#xff0c;一个分区&#xff0c;多个消费者&#xff0c;可以保证有序消费吗 5&#xff0c;kafka如何实现顺序消费&#xff0c;一…...

Linux中基础开发工具详细介绍

目录 软件包管理器什么是软件包Linux软件生态 yum具体操作查看软件包安装软件卸载软件注意事项 编辑器VimLinux编辑器-vim使用vim的基本概念快速编辑的指令 编译器gcc/g背景知识gcc编译选项预处理(进行宏替换)编译&#xff08;生成汇编&#xff09;汇编&#xff08;生成机器可识…...

浅谈时钟启动和Systemlnit函数

时钟是STM32的关键&#xff0c;是整个系统的心脏&#xff0c;时钟如何启动&#xff0c;时钟源如何选择&#xff0c;各个参数如何设置&#xff0c;我们从源码来简单分析一下时钟的启动函数Systemlnit&#xff08;&#xff09;。 Systemlnit函数简介 我们先来看一下源程序的注释…...

社交软件频繁更新,UI 设计在其中扮演什么角色?

在当今数字化时代&#xff0c;社交软件已成为人们日常生活中不可或缺的一部分。随着科技的飞速发展和用户需求的不断变化&#xff0c;社交软件更新频率日益加快。在这频繁更新的背后&#xff0c;UI 设计扮演着至关重要的角色&#xff0c;它如同社交软件的 “门面担当” 与 “交…...

SQLMesh 系列教程:解锁SQLMesh的宏与变量魔法

在数据库流水线开发中&#xff0c;代码复用与动态配置是提升效率的核心诉求。SQLMesh以其独特的宏系统与用户定义变量机制&#xff0c;重新定义了SQL生成的灵活性。与传统模板引擎不同&#xff0c;SQLMesh的宏并非简单的字符串替换&#xff0c;而是基于语义理解的智能代码重构—…...

React篇之three渲染

需求&#xff1a;拖拽右侧面板&#xff0c;里面的three模型能够自适应 import { useEffect, useState, useRef } from react import ./App.css import * as THREE from three; import { GLTFLoader } from three/addons/loaders/GLTFLoader.js; import { debounce } from loda…...

PHP与前端框架的无缝集成:最佳实践与案例分析

PHP与前端框架的无缝集成&#xff1a;最佳实践与案例分析 在现代Web开发中&#xff0c;PHP作为后端语言与前端框架的集成已成为一种常见的开发模式。无论是传统的MVC架构&#xff0c;还是现代的SPA&#xff08;单页应用&#xff09;&#xff0c;PHP与前端框架的无缝集成能够显…...

Redis内存淘汰策略

Redis 是一种高性能的键值存储系统&#xff0c;广泛用于缓存、消息队列等场景。由于 Redis 数据存储在内存中&#xff0c;而内存资源有限&#xff0c;因此需要内存淘汰策略来管理内存的使用。Redis 提供了多种内存淘汰策略&#xff0c;可以根据不同的应用场景选择合适的策略。 …...

Facebook 的框架及技术栈

一、前端框架与技术 React.js 及其生态系统 核心原理与特点 React.js 是 Facebook 开源的用于构建用户界面的 JavaScript 库。它的核心概念是组件化&#xff0c;将用户界面拆分成一个个独立的、可复用的组件。每个组件都有自己的状态&#xff08;state&#xff09;和属性&#…...

QT中的布局管理

在 Qt 中&#xff0c;布局管理器&#xff08;如 QHBoxLayout 和 QVBoxLayout&#xff09;的构造函数可以接受一个 QWidget* 参数&#xff0c;用于指定该布局的父控件。如果指定了父控件&#xff0c;布局会自动将其管理的控件添加到父控件中。 在你的代码中&#xff0c;QHBoxLa…...

如何学习VBA_3.2.20:DTP与Datepicker实现日期的输入

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的劳动效率&#xff0c;而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册&#xff0c;现在已经全部完成&#xff0c;希望大家利用、学习。 如果…...

在 LaTeX 中强制表格位于页面顶部

在 LaTeX 中强制表格位于页面顶部&#xff0c;可以通过以下 多种方法结合使用&#xff0c;按优先级推荐&#xff1a; 方法 1&#xff1a;使用 [!t] 位置限定符 原理&#xff1a;通过 [!t] 强制 LaTeX 优先将表格放置在页面顶部&#xff08;Top&#xff09;&#xff0c;! 表示忽…...

dify+mysql的诗词助手

目录 数据库表结构&#xff1a; 数据库查询的http服务搭建&#xff1a; 流程引擎搭建&#xff1a; 开始&#xff0c; HTTP查询数据库&#xff0c; LLM数据分析&#xff0c; 直接回复&#xff0c; 效果测试&#xff1a; 下载链接&#xff1a; 数据库表结构&#xff1a;…...

PyTorch 入门学习

目录 PyTorch 定义 核心作用 应用场景 Pytorch 基本语法 1. 张量的创建 2. 张量的类型转换 3. 张量数值计算 4. 张量运算函数 5. 张量索引操作 6. 张量形状操作 7. 张量拼接操作 8. 自动微分模块 9. 案例-线性回归案例 PyTorch 定义 PyTorch 是一个基于 Python 深…...

【视频】SRS将RTMP转WebRTC、HLS流;获取RTSP转其它流

1、安装依赖库 sudo apt install tclsh sudo apt install cmake sudo apt install autotools-dev automake m4 perl sudo apt install libtool2、源码安装 1)下载源码 https://github.com/ossrs/srs/releases/tag/v5.0-r32)配置、编译 ./configure && make -j83、…...

linux中如何查询文件夹大小

在 Linux 中&#xff0c;可以使用 du 命令查看文件夹大小。以下是常用方法&#xff1a; 标题1. 查看文件夹大小 du -sh /path/to/directory-s&#xff1a;显示总大小。 -h&#xff1a;以易读格式&#xff08;如 KB、MB、GB&#xff09;显示大小。 标题2&#xff1a;查看文件…...

MySQL增删改查操作 -- CRUD

个人主页&#xff1a;顾漂亮 目录 1.CRUD简介 2.Create新增 使用示例&#xff1a; 注意点&#xff1a; 3.Retrieve检索 使用示例&#xff1a; 注意点&#xff1a; 4.where条件查询 前置知识&#xff1a;-- 运算符 比较运算符 使用示例&#xff1a; 注意点&#xf…...

uniapp+Vue3 组件之间的传值方法

一、父子传值&#xff08;props / $emit 、ref / $refs&#xff09; 1、props / $emit 父组件通过 props 向子组件传递数据&#xff0c;子组件通过 $emit 触发事件向父组件传递数据。 父组件&#xff1a; // 父组件中<template><view class"container">…...

TDengine SQL 函数

单行函数 数学函数 ABSACOSASINATANCEILCOSDEGREESEXPFLOORGREATESTLEASTLNLOGMODPIPOWRADIANSRANDROUNDSIGNSINSQRTTANTRUNCATE 字符串函数 ASCIICHARCHAR_LENGTHCONCATCONCAT_WSLENGTHLOWERLTRIMPOSITIONREPEATREPLACERTRIMSUBSTRING/SUBSTRSUBSTRING_INDEXTRIMUPPER 转换函数…...

智能三防手持终端破解传统仓储效率困局

在数字化浪潮的推动下&#xff0c;传统仓储管理模式正面临效率低、成本高、错误频发等瓶颈。如何实现精准、高效、智能化的仓储管理&#xff0c;上海岳冉三防智能手持终端机以RFID技术为核心&#xff0c;结合工业级三防&#xff08;防水、防摔、防尘&#xff09;设计&#xff0…...

力扣——K个一组翻转链表

题目链接&#xff1a; 链接 题目描述&#xff1a; 思路&#xff1a; 可以理解为把原链表的每一段进行反转 把链表的每一段看成新链表&#xff0c;单独进行反转&#xff0c;然后再放回原链表 关键是截取k个节点、进行反转后&#xff0c;怎么再和原链表链接起来 我们把截取的…...

5-27 临摹大师-IP-Adapter

前言&#xff1a; 前一节我们主要介绍ControlNet中如何对黑白照片进行上色 主要介绍ControlNet中的IP-Adapter。这个也是一种类似的风格借鉴&#xff0c;类似Reference的能力。 当然IP-Adapter有两点或许可以吸引我们&#xff0c;一个是国人腾讯公司制作的。另一个在速度和效…...

MinIO的预签名直传机制

我们传统使用MinIo做OSS对象存储的应用方式往往都是在后端配置与MinIO的连接和文件上传下载的相关接口&#xff0c;然后我们在前端调用这些接口完成文件的上传下载机制&#xff0c;但是&#xff0c;当并发量过大&#xff0c;频繁访问会对后端的并发往往会对服务器造成极大的压力…...

树莓科技集团董事长:第五代产业园运营模式的深度剖析与展望​

第五代产业园运营模式&#xff0c;以创新为核心驱动&#xff0c;强调数字化、网络化和资源整合。树莓科技集团在这一领域具有代表性&#xff0c;其运营模式值得深入剖析。 核心特征 数字化转型&#xff1a;第五代产业园高度重视数字化技术的应用&#xff0c;通过构建数字化平…...

项目组织管理类型-职能式组织和矩阵式组织的区别

在职能式组织和矩阵式组织中&#xff0c;任务分配和人员安排确实有显著的不同&#xff0c;让我们通过以下例子来进一步解释&#xff1a; 职能式组织在职能式组织中&#xff0c;任务通常是根据部门的职能进行下达的。 例如&#xff0c;一家制造公司的组织结构如下&#xff1a; …...

树莓科技(成都)集团:如何铸就第五代产业园标杆

树莓科技&#xff08;成都&#xff09;集团铸就第五代产业园标杆&#xff0c;主要体现在以下几个方面&#xff1a; 精准定位与前瞻布局 树莓科技并非盲目扩张&#xff0c;而是精准锚定数字经济发展方向。以成都为起点&#xff0c;迅速构建起全国性的园区版图&#xff0c;体现…...

【Quest开发】手柄交互震动

软件&#xff1a;Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72&#xff08;要提前导入哦&#xff09; 硬件&#xff1a;Meta Quest3 参考Meta开发文档&#xff1a;https://developers.meta.com/horizon/documentation/unity/unity-haptics-sdk-integrate 这篇官…...

《Transformer如何进行图像分类:从新手到入门》

引言 如果你对人工智能&#xff08;AI&#xff09;或深度学习&#xff08;Deep Learning&#xff09;感兴趣&#xff0c;可能听说过“Transformer”这个词。它最初在自然语言处理&#xff08;NLP&#xff09;领域大放异彩&#xff0c;比如在翻译、聊天机器人和文本生成中表现出…...

数字图像处理与Python语言实现-Box模糊CUDA实现

Box模糊CUDA实现 文章目录 Box模糊CUDA实现1、Box模糊的基本原理2、算法优化:滑动窗口技术3、参数对模糊效果的影响4、Box模糊的优缺点5、与高斯模糊的对比6、实际应用场景7、算法实现7.1 PyCUDA实现7.2 CuPy实现7.3 C++与CUDA实现8、总结在图像处理领域,**Box模糊(方框模糊…...

MAVEN解决版本依赖冲突

文章目录 一、依赖冲突概念1、什么是依赖冲突2、依赖冲突的原因3、如何解决依赖冲突 二、查看依赖冲突-maven-helper1、安装2、helper使用1、conflicts的阅读顺序&#xff08;从下向上看&#xff09;2、dependencies as List的阅读顺序&#xff08;从下向上看&#xff09;3、de…...

Compose 实践与探索五 —— AnimationSpec

不论是 animateXxxAsState() 还是 Animatable 的 animateTo() 都可以传入 AnimationSpec 以配置动画的规格&#xff1a; Composable fun animateDpAsState(targetValue: Dp,animationSpec: AnimationSpec<Dp> dpDefaultSpring,label: String "DpAnimation",…...

Embedding模型到底是什么?

嵌入模型&#xff08;Embedding Model&#xff09;是一种将高维数据映射到低维空间的工具&#xff0c;广泛应用于自然语言处理&#xff08;NLP&#xff09;、推荐系统和图像识别等领域。它的核心目标是将复杂的数据&#xff08;如文本、图像或用户行为&#xff09;转换为稠密的…...

数据结构(一)——绪论

一、数据结构的研究内容 1.数据的各种逻辑结构和物理结构&#xff0c;以及他们之间的相应关系 2.存储结构的方法&#xff0c;对每种结构定义相适应的各种运算 3.设计出相应的算法 4.分析算法的效率 二、数据结构的基本概念 1.数据&#xff08;data&#xff09;&#xff1a…...

VMware虚拟机网络连接模式介绍以及nat模式访问公网实践

在 VMware 虚拟机中&#xff0c;网络配置是非常重要的一部分。VMware 提供了三种主要的网络连接模式&#xff0c;分别是桥接模式&#xff08;Bridged&#xff09;、NAT模式&#xff08;NAT&#xff09; 和仅主机模式&#xff08;Host-Only&#xff09;。每种模式都有其特定的用…...

Selenium Manager和webdriver manager的区别与联系

一、引言 1.1 自动化测试的重要性 在现代软件开发流程中&#xff0c;自动化测试已经成为保证软件质量和提高交付效率的关键实践。随着软件开发周期的缩短和软件复杂性的增加&#xff0c;手工测试已无法满足快速迭代的需求。自动化测试能够快速、准确地执行重复性测试任务&…...