正则表达式怎么用?从高亮匹配看懂每一条规则

正则表达式怎么用?从高亮匹配看懂每一条规则
用好正则表达式的诀窍不是背符号表,而是写一条模式、喂一段文本、立刻看命中结果,反复试错十几轮,规则自然就成型了。

用好正则表达式的诀窍不是背符号表,而是写一条模式、喂一段文本、立刻看命中结果,反复试错十几轮,规则自然就成型了。

先分清楚:模式、文本、标志位

一条正则由三部分组成。模式定义要找什么,比如 \d+ 表示一串连续数字;测试文本决定去哪里找;标志位控制怎么找。很多人只改模式不动标志位,结果永远只命中第一处——不加 g 时,正则找到第一个匹配就停下来。把模式与文本放在同一界面同步修改,改一个字符看一次高亮,反馈越快理解越快。

标志位怎么选:g、i、m、s、u

g 全局匹配所有命中;i 忽略大小写;m 让 ^ 和 $ 匹配每行头尾而非整段;s 让圆点 . 也能匹配换行,跨行抓取时才有意义;u 按 Unicode 码位处理 emoji 等多字节字符。测试多行日志或配置,通常先开 g 和 m。

捕获组与替换预览:匹配只是第一步

圆括号圈住的内容是捕获组,按出现顺序编号。把 (\d{4})-(\d{2})-(\d{2}) 应用到「订单日期 2026-09-20」,三个组分别拿到年、月、日;替换时用 $1、$2 就能按任意顺序重新拼接,写成 $3/$2/$1 即换成日/月/年。在 在线正则测试工具 里,命中位置直接高亮标色,前八条命中的分组取值逐行列出,替换结果即时预览。

匹配失败时按顺序排查三件事

一查转义:想匹配句点、星号、括号本身必须加反斜杠;二查标志位:多行文本没开 m 时 ^ 只认整段开头;三查语法:模式写错时页面给出的是报错文字而不是「无匹配」,别把两者混淆。

使用技巧

  • 从现成模板起步:手机号用 1[3-9]\d{9},邮箱用 [\w.+-]+@[\w-]+\.[\w.-]+,速查表里还有 IPv4 写法,按真实数据收紧。
  • 需要整词匹配时用 \b,例如 \bcat\b 不会命中 category,避免查一个单词却捞出半句话。
  • 先确认匹配总数符合预期再看替换预览,一次只验证一个假设。

常见问题

正则表达式怎么学才快?

别从符号表背起。挑一个真实需求(如从日志抓日期),放进 正则测试工具 边改边看高亮,十分钟的循环胜过一小时教程。

JS 正则和 Python 正则通用吗?

九成日常写法通用(\d、量词、分组)。差异集中在后行断言、命名组与部分转义细节上,跨语言迁移时务必重跑验证。

为什么匹配不到中文?

中文本身可以匹配,常见原因是混入全角空格或不可见字符,或跨行匹配漏开 s 标志;用 [\u4e00-\u9fa5] 区间可精确限定汉字。

小结

正则靠验证驱动:工具即时摊开结果,你只管提出更小、可检验的规则。

← 当AI生成撞上版权红线:迪士尼怒指Seedance 2.0,谁该为“蜘蛛侠送外卖”买单? 文本对比怎么用?两栏粘贴让改动自动显形 →