土薯工具 Toolshu.com 登录 用户注册

开发者最常用的20个正则表达式速查手册

原创 作者:bhnw 于 2026-04-05 10:44 发布 11次浏览 收藏 (0)

写在前面

正则表达式是开发者绕不开的工具,但很少有人会把所有语法背下来。更实用的做法是:理解核心语法,遇到具体场景直接查现成的模式

本文整理了开发中最高频出现的 20 个正则表达式,每条附上模式说明和示例,可以直接复制使用。文末附在线验证工具入口,方便调试。


基础语法速览

在看具体模式之前,先确认几个最常用的元字符:

符号 含义
. 匹配任意单个字符(换行除外)
* 前一个字符重复 0 次或多次
+ 前一个字符重复 1 次或多次
? 前一个字符重复 0 次或 1 次
^ 匹配字符串开头
$ 匹配字符串结尾
\d 匹配数字,等价于 [0-9]
\w 匹配字母、数字、下划线
\s 匹配空白字符
{n,m} 重复 n 到 m 次
[abc] 匹配括号内任意一个字符
(a|b) 匹配 a 或 b

一、用户信息类

1. 邮箱地址

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

说明: 匹配标准邮箱格式。本地部分允许字母、数字和 ._%+-,域名部分要求有点号分隔,顶级域名至少2位。

示例匹配: user@example.comhello.world+tag@sub.domain.org


2. 中国大陆手机号

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

说明: 匹配以 1 开头、第二位为 3-9 的 11 位手机号,覆盖目前所有运营商号段。

示例匹配: 1381234567819911112222


3. 座机号码(含区号)

^(0\d{2,3})[\-\s]?(\d{7,8})$

说明: 匹配带区号的座机,区号 3-4 位,号码 7-8 位,中间可有连字符或空格。

示例匹配: 010-123456780571 87654321


4. 中国身份证号(18位)

^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$

说明: 匹配18位身份证。包含省份代码、出生年份(18xx/19xx/20xx)、月份、日期校验,末位允许 X。注意这只做格式校验,不做校验位计算。


5. 用户名(字母数字下划线)

^[a-zA-Z0-9_]{4,16}$

说明: 常见注册场景,4-16位,只允许字母、数字、下划线。可根据需求调整长度区间。


6. 强密码

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*]).{8,}$

说明: 至少8位,必须包含小写字母、大写字母、数字、特殊字符各至少一个。使用了前瞻断言 (?=...)


二、网络地址类

7. URL

^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)$

说明: 匹配 http 和 https 链接,包含路径、查询参数、锚点等完整 URL 结构。

示例匹配: https://toolshu.com/regex-visualizerhttp://sub.example.com/path?q=1


8. IPv4 地址

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

说明: 精确匹配 0.0.0.0 到 255.255.255.255 范围内的 IPv4 地址。

示例匹配: 192.168.1.1255.255.255.0


9. IPv6 地址(简化版)

^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$

说明: 匹配完整展开的 IPv6 地址(不含缩写形式)。生产环境建议使用更完整的版本。


10. 域名

^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$

说明: 匹配标准域名,支持多级子域名,每段最长63字符。


三、日期时间类

11. 日期(YYYY-MM-DD)

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

说明: 匹配标准 ISO 日期格式,对月份和日期范围做了约束,但不校验具体月份天数(如2月30日能通过)。

示例匹配: 2024-01-312000-12-01


12. 时间(HH:MM:SS)

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

说明: 匹配 24 小时制时间,小时 00-23,分钟秒钟 00-59。


13. 中文日期(YYYY年MM月DD日)

^\d{4}年(0?[1-9]|1[0-2])月(0?[1-9]|[12]\d|3[01])日$

示例匹配: 2024年3月15日2000年12月01日


四、内容格式类

14. 整数(含负数)

^-?[1-9]\d*$|^0$

说明: 匹配整数,允许负号,但不允许前导零(01 不匹配)。0 单独处理。


15. 小数(含负数)

^-?([1-9]\d*|0)\.\d+$

说明: 匹配带小数点的数字,小数点后必须有数字。不匹配 1.(末尾有点没有数字)。


16. 中文字符

^[\u4e00-\u9fa5]+$

说明: 匹配纯汉字字符串,Unicode 范围覆盖常用汉字。


17. 空行

^\s*$

说明: 匹配只含空白字符或完全为空的行,常用于清理文本时过滤空行。


18. HTML 标签

<([a-zA-Z][a-zA-Z0-9]*)\b[^>]*>(.*?)<\/\1>

说明: 匹配成对的 HTML 标签及其内容。注意:用正则解析复杂 HTML 并不可靠,复杂场景建议用 DOM 解析器。


19. 十六进制颜色值

^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

说明: 匹配 CSS 颜色值,支持3位和6位简写。

示例匹配: #FF5733#fff


20. 中国邮政编码

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

说明: 匹配6位数字邮政编码,首位不为0。


使用这些正则时的注意事项

1. 不同语言的语法差异

各语言对正则的支持略有不同。JavaScript 不支持 lookbehind(旧版),Python 的 re 模块默认不支持原子组。复制正则后建议在目标语言环境里验证。

2. 转义问题

在字符串中写正则时,反斜杠需要双写。比如 \d 在 Python 字符串里要写成 '\\d',或使用原始字符串 r'\d'

3. 格式校验 ≠ 数据合法

正则只能做格式层面的校验。身份证末位校验码、邮箱域名是否真实存在、手机号是否在网,都需要额外的逻辑处理。


在线验证

调试或验证这些正则时,可以使用 toolshu.com 提供的两个工具:

两个工具均在浏览器本地运行,无需登录。

发现周边 发现周边
评论区

加载中...