开发中常用的正则表达式规则与应用

server/2025/3/10 9:20:32/

正则表达式(Regular Expression,简称 regex 或 regexp)是开发中处理文本的强大工具。无论是数据验证、字符串提取,还是文本格式化,正则表达式都能高效完成任务。本文将介绍正则表达式的基本语法、常用匹配规则及其应用场景。

1. 正则表达式的基本语法

正则表达式由普通字符和特殊字符组成,用于定义字符串的匹配模式。以下是正则表达式的基本语法:

1.1 普通字符

普通字符匹配自身。例如:

  • a 匹配字符 a

  • 123 匹配字符串 123

1.2 特殊字符

特殊字符用于定义复杂的匹配规则。以下是常见的特殊字符:

字符描述
.匹配任意单个字符(除换行符)。
*匹配前一个字符的零次或多次。
+匹配前一个字符的一次或多次。
?匹配前一个字符的零次或一次。
^匹配字符串的开头。
$匹配字符串的结尾。
\d匹配数字字符,等价于 [0-9]
\w匹配字母、数字或下划线,等价于 [a-zA-Z0-9_]
\s匹配空白字符(空格、制表符、换行符等)。
[]匹配括号内的任意一个字符。例如 [abc] 匹配 ab 或 c
()分组,将多个字符作为一个整体处理。
|或操作符。例如 `a|b` 匹配ab
\转义字符,用于匹配特殊字符本身。例如 \. 匹配字符 .

2. 常用的正则表达式规则

以下是开发中常用的正则表达式规则及其用途。

2.1 验证邮箱地址

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • 用途:验证用户输入的邮箱地址是否合法。

  • 示例

    • 合法:test@example.com

    • 非法:test@.com

2.2 验证手机号码

^(?:\+?86)?1[3-9]\d{9}$
  • 用途:验证中国大陆手机号码。

  • 示例

    • 合法:13800138000+8613800138000

    • 非法:12345678901

2.3 验证 URL

^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$
  • 用途:验证 URL 是否合法。

  • 示例

    • 合法:https://www.example.comhttp://example.com/path

    • 非法:example.com

2.4 验证日期格式(YYYY-MM-DD)

^\d{4}-\d{2}-\d{2}$
  • 用途:验证日期格式是否为 YYYY-MM-DD

  • 示例

    • 合法:2023-10-05

    • 非法:2023/10/05

2.5 验证身份证号码(中国大陆)

^\d{17}[\dXx]$
  • 用途:验证中国大陆身份证号码(18 位,最后一位可能是数字或 X)。

  • 示例

    • 合法:11010519900307123411010519900307123X

    • 非法:11010519900307123

2.6 验证密码强度 

^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
  • 用途:验证密码是否包含至少一个字母和一个数字,且长度至少为 8。

  • 示例

    • 合法:Password123

    • 非法:password

 2.7 提取 HTML 标签中的内容

<([a-z]+)[^>]*>(.*?)<\/\1>
  • 用途:提取 HTML 标签及其内容。

  • 示例

    • 输入:<div>Hello World</div>

    • 匹配:<div>Hello World</div>

2.8 匹配 IP 地址

^(\d{1,3}\.){3}\d{1,3}$
  • 用途:验证 IPv4 地址。

  • 示例

    • 合法:192.168.1.1

    • 非法:256.256.256.256

2.9 匹配中文字符

[\u4e00-\u9fa5]
  • 用途:匹配中文字符。

  • 示例

    • 输入:你好,世界!

    • 匹配:

 2.10 匹配十六进制颜色值

^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
  • 用途:验证十六进制颜色值。

  • 示例

    • 合法:#ffffff#fff

    • 非法:#zzz

3. 正则表达式的应用场景

3.1 数据验证

在表单提交时,正则表达式可以快速验证用户输入的数据是否合法。例如:

  • 验证邮箱、手机号、身份证号等格式。

  • 验证密码强度是否符合要求。

3.2 文本提取

从复杂的文本中提取特定内容。例如:

  • 提取 HTML 标签中的内容。

  • 从日志文件中提取特定格式的数据。

3.3 文本替换

将符合模式的字符串替换为其他内容。例如:

  • 将文本中的敏感词替换为 ***

  • 格式化日期字符串。

3.4 字符串分割

根据模式将字符串拆分为多个部分。例如:

  • 按逗号或空格分割字符串。

  • 从文件路径中提取目录和文件名。

4. 总结

正则表达式是开发中不可或缺的工具,熟练掌握其基本语法和常用规则可以显著提高开发效率。本文介绍了正则表达式的基本语法、常用匹配规则及其应用场景,希望对你的开发工作有所帮助。如果你有更多正则表达式的使用技巧,欢迎在评论区分享!


http://www.ppmy.cn/server/173899.html

相关文章

深度学习五大模型:CNN、Transformer、BERT、RNN、GAN详细解析

卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09; 原理 &#xff1a;CNN主要由卷积层、池化层和全连接层组成。卷积层通过卷积核在输入数据上进行卷积运算&#xff0c;提取局部特征&#xff1b;池化层则对特征图进行下采样&#xff0c;降低特征维度&…

设计AI芯片架构的入门 研究生入行数字芯片设计、验证的项目 opentitan

前言 这几年芯片设计行业在国内像坐过山车。时而高亢&#xff0c;时而低潮。最近又因为AI的热潮开始high起来。到底芯片行业的规律是如何&#xff1f; 我谈谈自己观点&#xff1a;芯片设计是“劳动密集型”行业。 “EDA和工具高度标准化和代工厂的工艺标准化之后&#xff0c;芯…

k8s概念及k8s集群部署(Centos7)

Centos7部署k8s集群 部署之前&#xff0c;先简单说下k8s是个啥&#xff1a; 一、k8s简介&#xff1a; k8s&#xff0c;全称&#xff1a;kubernetes&#xff0c;它可以看作是一个分布式系统支撑平台。k8s的作用&#xff1a; 1、故障自愈&#xff1a; k8s这个玩意可以监控容器…

核函数及其常见类型

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 &#x1f4da; 核心概念 核函…

【经验分享】Ubuntu20.04编译RK3568 AI模型报错问题(已解决)

【经验分享】Ubuntu20.04编译RK3568 AI模型报错问题&#xff08;已解决&#xff09; 前言问题现象问题分析解决方案总结 前言 这里使用的是Rockchip提供的rknn_model_zoo&#xff0c;https://github.com/airockchip/rknn_model_zoo/tree/main 此解决方案适用于Rockchip芯片在U…

WPS工具栏添加Mathtype加载项

问题描述&#xff1a; 分别安装好WPS和MathType之后&#xff0c;WPS工具栏没直接显示MathType工具&#xff0c;或者是前期使用正常&#xff0c;由于WPS更新之后MathType工具消失&#xff0c;如下图 解决办法 将文件“MathType Commands 2016.dotm”和“MathPage.wll”从Matht…

2025年Linux 安全与运维指南

目前&#xff0c;很多的站点和服务都运行在Linux服务器上。而Linux日常运维和安全也是管理员的基本要求。本文简单的为你介绍Linux系统中常用的命令和日志文件&#xff0c;能够帮助安全运维人员更有效地管理和保护Linux环境。 Linux基础命令 文件和目录操作 ls&#xff1a;列…

【网络】HTTP协议、HTTPS协议

HTTP与HTTPS HTTP协议概述 HTTP(超文本传输协议):工作在OSI顶层应用层,用于客户端(浏览器)与服务器之间的通信,B/S模式 无状态:每次请求独立,服务器不保存客户端状态(通过Cookie/Session扩展状态管理)。基于TCP:默认端口80(HTTP)、443(HTTPS),保证可靠传输。请…