常用的正则表达式

正则表达式在表单验证、文本提取以及数据清洗中,都能帮我们省下大量代码。今天就整理了一批日常开发高频用到的正则表达式,附上场景说明和使用提示,新手也能直接上手。

一、 基础字符匹配

这类正则主要用于快速筛选、匹配简单字符规则,是进阶用法的基础。

正则表达式 匹配场景 示例
^abc$ 精确匹配字符串abc(开头 + 结尾限制) 匹配abc,不匹配aabc/abc123
. 匹配除换行符外的任意单个字符 ​​​​​a.c匹配abc/a1c/a#c
\d 匹配单个数字(等价于[0-9]) \d\d匹配12/99,不匹配ab
\w 匹配字母、数字、下划线(等价于[a-zA-Z0-9_]) \w+匹配user_01/name23
\s 匹配任意空白字符(空格、制表符、换行等) a\sb匹配a b/a b
[abc] 匹配括号内的任意一个字符 [abc]匹配a/b/c
[^abc] 匹配除括号内字符外的任意字符 [^abc]匹配1/x/#,不匹配a

二、 表单验证高频正则

前端 / 后端做表单校验时,这些正则能直接复用,覆盖大部分常见场景。

1. 手机号验证

python 复制代码
^1[3-9]\d{9}$
  • 说明:以1开头,第二位为3-9(排除 12 开头的非手机号段),后面跟 9 位数字。
  • 注意:仅做格式校验,不验证号码是否真实存在。

2. 邮箱验证

javascript 复制代码
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
  • 说明:支持字母、数字、下划线、连字符,适配大部分主流邮箱格式(如user_name@163.com、test-123@qq.com.cn)。

3. 身份证号验证

python 复制代码
^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$
  • 说明:严格匹配 18 位身份证结构 ------6 位地址码 + 8 位出生日期(19/20 开头)+3 位顺序码 + 1 位校验码(支持 X/x)。

4. 密码强度验证

python 复制代码
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,16}$
  • 说明:8-16 位,必须包含大小写字母和数字,兼顾安全性和易用性。
  • 进阶:如需加入特殊字符,可添加(?=.*[!@#$%^&*])。

5. 邮政编码

python 复制代码
^[1-9]\d{5}$
  • 说明:6 位数字,第一位不为 0。

三、 文本处理常用正则

日常做文本提取、替换、清洗时,这些正则能大幅提升效率。

1. 提取 URL 链接

python 复制代码
https?://[^\s]+

2. 匹配 HTML 标签

复制代码
<[^>]+>
  • 说明:匹配<开头、>结尾的标签,适用于简单的标签删除场景。
  • 注意:复杂 HTML 解析建议用专业库(如 Python 的 BeautifulSoup),正则无法处理嵌套标签。

3. 匹配中文字符

python 复制代码
[\u4e00-\u9fa5]
  • 说明:匹配任意单个汉字,\u4e00-\u9fa5是汉字的 Unicode 编码范围。
  • 扩展:[\u4e00-\u9fa5]+匹配连续汉字,可用于提取中文姓名、标题。

4. 去除多余空格

python 复制代码
\s+
  • 用法:将匹配到的连续空格替换为单个空格(如 JavaScript 中str.replace(/\s+/g, ' '))。

5. 匹配数字(整数 + 小数)

python 复制代码
^-?\d+(\.\d+)?$
  • 说明:匹配正负数、整数和小数,例如123、-45.67、0.89。

四、 开发小技巧 & 注意事项

1. 贪婪匹配 vs 非贪婪匹配

  1. 正则默认是贪婪匹配(尽可能匹配更多字符),比如a.*b匹配a123b456b时会取整个字符串;
  2. 加?可切换为非贪婪匹配,a.*?b会匹配a123b。

2. 不同语言的正则差异

  1. JavaScript 中需要加修饰符(如g全局匹配、i忽略大小写);
  2. Python 的re模块需注意转义字符(用原始字符串r''避免双反斜杠)。

3. 测试工具推荐 写正则时可以先用在线工具验证,比如 Regex101菜鸟工具正则测试,能直观看到匹配结果。

相关推荐
晚霞的不甘11 小时前
Flutter for OpenHarmony从基础到专业:深度解析新版番茄钟的倒计时优化
android·flutter·ui·正则表达式·前端框架·鸿蒙
幼稚园的山代王3 天前
Java 正则核心 API 拆解
java·开发语言·正则表达式
马猴烧酒.3 天前
【正则表达式详解|Java】从0学习实战够用
学习·正则表达式
流㶡5 天前
Python数据分析中的正则表达式:匹配字符串与常用函数详解
正则表达式
sulikey5 天前
B站网页端弹幕屏蔽词正则表达式
正则表达式·bilibili·哔哩哔哩·屏蔽弹幕
sulikey5 天前
B站移动客户端的正则表达式屏蔽规则
正则表达式·bilibili·哔哩哔哩·弹幕屏蔽
longailk5 天前
grep正则表达式小失误
java·服务器·正则表达式
白小筠5 天前
Python之正则表达式
开发语言·python·正则表达式
m0_748248656 天前
C++正则表达式攻略:从基础到高级应用
java·c++·正则表达式
晚霞的不甘7 天前
Flutter for OpenHarmony 创意实战:打造一款炫酷的“太空舱”倒计时应用
开发语言·前端·flutter·正则表达式·前端框架·postman