正则表达式(Regular Expression,简称 regexregexp)是每个开发者迟早都要掌握的技能。它看起来像一堆乱码,但一旦理解了背后的逻辑,你会发现它简直是文本处理的瑞士军刀——验证表单、解析日志、批量替换内容,统统搞定。

本文带你从零开始,快速掌握正则表达式的核心语法,并学会用在线工具即时测试你的 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 个字母)

能匹配 hello@example.com,拒绝 @nodomainmissingat.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+$ 才能保证整个字符串都是数字。
  • 用捕获组提取内容。用 () 括起来的部分,可以在代码里单独提取,非常适合从字符串中解析结构化数据。

正则表达式是熟能生巧的技能。不需要把所有语法背下来,理解核心概念后,边查边用就好。

立即使用 ujiffy 正则测试工具 →

粘贴你的测试文本,输入 pattern,匹配结果实时高亮——不用注册,不用安装,直接开始。