正则表达式(Regular Expression,简称 regex 或 regexp)是每个开发者迟早都要掌握的技能。它看起来像一堆乱码,但一旦理解了背后的逻辑,你会发现它简直是文本处理的瑞士军刀——验证表单、解析日志、批量替换内容,统统搞定。
本文带你从零开始,快速掌握正则表达式的核心语法,并学会用在线工具即时测试你的 pattern。
正则表达式是什么?
简单说:正则表达式是一种描述文本模式的语言。
普通的"查找"功能只能搜索固定字符串,而正则可以描述"结构"。比如,你不需要一个个去找所有邮箱地址,只需要写一个能匹配"邮箱格式"的 pattern,就能一网打尽。
几乎所有主流编程语言都内置了正则支持——JavaScript、Python、Go、Java……代码编辑器的搜索功能、命令行工具 grep、数据库查询,也都支持正则。
基础语法速查表
不需要死记硬背,先理解这几类核心概念:
字符类
| 写法 | 匹配内容 |
|---|---|
. | 任意单个字符(不含换行) |
\d | 数字 0–9 |
\w | 字母、数字、下划线 |
\s | 空白字符(空格、制表符等) |
[abc] | a、b、c 三者之一 |
[a-z] | 任意小写字母 |
[^abc] | 除 a、b、c 以外的字符 |
量词
| 写法 | 含义 |
|---|---|
* | 0 次或多次 |
+ | 1 次或多次 |
? | 0 次或 1 次(可选) |
{3} | 恰好 3 次 |
{2,5} | 2 到 5 次 |
锚点
| 写法 | 含义 |
|---|---|
^ | 字符串开头 |
$ | 字符串结尾 |
\b | 单词边界 |
分组与选择
| 写法 | 含义 |
|---|---|
(abc) | 捕获分组 |
a|b | 匹配 a 或 b |
3 个实用例子
例 1:邮箱地址
^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$
逐段解释:
^[\w.-]+— 邮箱用户名(字母/数字/点/连字符)@— 字面符号 @[\w.-]+— 域名主体\.[a-zA-Z]{2,}$— 点号 + 顶级域名(至少 2 个字母)
能匹配 [email protected],拒绝 @nodomain 或 missingat.com。
例 2:网址(URL)
https?:\/\/[\w.-]+(\/[\w./?=%&-]*)?
逐段解释:
https?— 匹配 http 和 https 两种协议:\/\/— 字面的://[\w.-]+— 域名(\/[\w./?=%&-]*)?— 可选的路径和查询参数
例 3:日期格式(YYYY-MM-DD)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
这个 pattern 不仅匹配格式,还做了基本的范围校验:
- 月份只允许 01–12
- 日期只允许 01–31
比直接用 \d{4}-\d{2}-\d{2} 更严格。
为什么推荐用在线工具测试?
很多人写正则的方式是:写好 → 放到代码里 → 跑程序 → 发现不对 → 再改。这个流程太低效了。
在线正则测试工具的优势:
- 实时高亮:输入 pattern 的同时,匹配结果立即可见
- 快速迭代:改一个字符,结果马上刷新,无需重新运行程序
- 捕获组可视化:一眼看出每个分组捕获了什么内容
- 测试多行文本:直接粘贴真实数据,批量验证
- 零门槛:不需要安装任何东西,打开浏览器就能用
对于初学者来说,这种即时反馈特别重要——你可以直观地看到哪里匹配了、哪里没匹配,而不是靠猜。
几个写正则的小技巧
- 从简单开始,逐步扩展。先写能匹配核心部分的 pattern,验证通过后再加约束。
- 注意特殊字符要转义。
. * + ? ( ) [ ] { } ^ $ |在正则里都有特殊含义,要匹配字面值时需要加\。 - 用锚点控制匹配范围。
\d+会匹配字符串中任意位置的数字,^\d+$才能保证整个字符串都是数字。 - 用捕获组提取内容。用
()括起来的部分,可以在代码里单独提取,非常适合从字符串中解析结构化数据。
正则表达式是熟能生巧的技能。不需要把所有语法背下来,理解核心概念后,边查边用就好。
粘贴你的测试文本,输入 pattern,匹配结果实时高亮——不用注册,不用安装,直接开始。