🔬 正则表达式 —

📄 测试文本 0 字符

📚 常用正则库

🔁 替换预览(可选)

支持 $1 $2 引用捕获组、$& 引用整个匹配、$` 与 $' 引用匹配前/后内容;未勾选 g 时只替换第一处。

🎯 匹配高亮 —

匹配结果会高亮显示在这里

⚠️ 使用说明:
· 结果为 JavaScript 正则(ECMAScript)语义,与 PHP(PCRE)、Python(re)、Java 的语法存在差异——例如 PHP 的 /(?P<name>…)/、Python 的 (?P=name) 在此不适用,JS 请用 (?<name>…);
· 不支持 递归、条件分支、占有量词、原子组等 PCRE 高级特性,粘贴这类正则会直接报错,属正常现象;
· 为避免页面卡死,单次最多展示 5000 个匹配,超出部分不再统计;
· 请留意灾难性回溯:形如 (a+)+$ 的正则遇到长文本可能长时间无响应,这属于正则本身的性能问题;
· 所有匹配与替换均在浏览器本地完成,文本不会上传服务器。

🔬

正则表达式测试器

效率工具 完全免费 🌙 支持黑夜模式 🔒 纯前端本地处理 ⚡ 边写边看结果

写正则最难受的不是语法难,而是反馈太慢:改一下、跑一次脚本、看一眼输出、再改一下……一来一回几分钟就没了。
这个工具把反馈压缩成「零延迟」:输入正则的同时,右侧立刻把所有匹配位置高亮出来,改一个字符就能看到命中范围的变化。
· 实时高亮:所有匹配项在原文中直接标色,相邻匹配交替配色,一眼看出有没有漏匹配、有没有多匹配;
· 分组可见:点开任意一个匹配,就能看到它匹配到的内容和每个捕获组的值,编号组与命名组都会列出;
· 修饰符随手开:g / i / m / s / u 五个常用开关,切换即重算,不用去改字面量;
· 替换预览:填上替换表达式(支持 $1、$&),立刻看到替换后的完整文本,改完再拿去写代码;
· 常用正则库:手机号、邮箱、身份证、URL、IP、日期、中文等十几个高频正则一键套用,拿来就用或作为起点修改;
· 错误友好:正则写错会直接提示具体的语法错误信息,不用对着控制台猜。
常用于:日志里捞数据、表单校验规则调试、批量文本清洗、爬虫提取规则验证。
所有匹配与替换均在浏览器本地完成,文本不会上传服务器。

类别效率工具
运行方式纯前端 · 离线可用
正则引擎JavaScript (ECMAScript)

核心特性

实时匹配高亮
分组捕获查看
5 个修饰符开关
替换预览
常用正则库
语法错误提示
匹配位置与长度
支持黑夜模式

正则是「写得慢」还是「调得慢」

多数人对正则的畏难情绪,其实不来自语法本身,而来自调试体验。
一个中等复杂度的正则,往往要经历十几次微调:量词加不加、贪婪还是懒惰、分组要不要非捕获、边界怎么写。如果每次修改都要「跑一遍代码、看一遍输出」,这十几轮下来就是十几分钟,注意力也在来回切换中被消耗掉。
反过来,如果修改和结果之间没有延迟——你敲一个字符,高亮范围立刻变化——整个过程就变成了一次连续的对话,你会很快建立起「这个写法会造成什么后果」的直觉。
本工具就是朝这个方向做的:把正则调试的反馈循环压到最短。另外提醒一句:能在页面上调通的正则,别忘了在真机数据量下再验证一次性能——正确性和效率是两件事。

怎么用

  1. 第 1 步
    把待匹配的文本粘贴到左侧下方的「测试文本」框。
  2. 第 2 步
    在「正则表达式」输入框里书写正则,或用「常用正则库」点一个作为起点。
  3. 第 3 步
    按需切换 g / i / m / s / u 修饰符,观察右侧高亮范围的变化。
  4. 第 4 步
    在下方「匹配详情」里逐条核对捕获组;需要批量改写时填入「替换预览」表达式,确认后再用到代码里。

更新记录

  • v1.0 2026-09-11 工具上线:支持实时匹配高亮(相邻匹配交替配色)、匹配位置与长度统计;支持 g / i / m / s / u 五个修饰符独立开关;提供匹配详情列表,逐条展示匹配内容、字符位置与全部捕获组(含命名组);支持替换预览($1、$&、$`、$' 语法);内置常用正则库(手机号、邮箱、身份证、URL、IPv4、日期时间、中文、数字、HTML 标签等)一键套用;正则语法错误即时提示;单次最多展示 5000 个匹配以防卡死;适配黑夜模式;纯前端本地处理。

常见问题

为什么我在 PHP / Python 里能用的正则,这里报错了?
因为本工具使用的是浏览器的 JavaScript 正则引擎(ECMAScript),它与 PCRE、Python、Java 的正则存在语法差异。常见的不兼容点:
· 命名分组写法不同:PHP / .NET 是 (?P<name>…) 或 (?<name>…),JS 只支持 (?<name>…);
· 不支持的高级特性:递归 (?R)、条件分支 (?(1)…)、占有量词 a++、原子组 (?>…)、\K、\p{...} 的部分写法等;
· 部分转义不同:如 \A、\Z、\h 在 JS 中无效。
建议先用本工具把逻辑调通,再把写法替换成目标语言的等价形式。
为什么开启了 g 之后,匹配结果和我预期的不一样?
关键在于「g 全局匹配」的含义是在整段文本中持续向后查找。
· 开启 g:找出文本里所有符合的位置,这也是本工具默认开启的原因;
· 关闭 g:只返回第一个匹配,适合先验证正则能否命中;
· 另外要注意 零长度匹配:像 \b、(?=x) 这类断言匹配到的内容长度为 0,它们在高亮区看不出颜色变化,但会出现在匹配列表里——这是正常现象。
顺带一提,^ 与 $ 默认只匹配整段文本的开头与结尾,想让它按行匹配,请勾选 m。
替换预览里的 $1、$& 是什么意思?
这些是替换引用,用来在替换结果中引用匹配到的内容:
· $1、$2 …:引用第 1、第 2 个捕获组的内容;$<name> 引用命名组;
· $&:引用整个匹配到的文本;
· $`:引用匹配内容之前的文本;$':引用匹配内容之后的文本;
· $$:输出一个字面量美元符号。
例如用 [$1] 替换 \d+,就能把每个数字串都加上中方括号。
注意 $0 在 JS 中不是「整个匹配」,如需整个匹配请用 $&。
为什么只显示 5000 个匹配?文本会上传吗?
限制数量是为了防止页面卡死:当匹配数量达到数万时,浏览器的 DOM 渲染会成为瓶颈,页面会明显卡顿。
如果你确实需要处理大量匹配,建议:
· 先用更精确的正则缩小匹配范围;
· 或者把文本分批粘贴,逐段验证。
所有匹配与替换都在你的浏览器本地完成,文本不会上传服务器,也不会写入存储,关闭页面即清空。

💬 留言板 0

全部留言需审核通过后展示
💬

还没有留言,来抢沙发吧!

✍️ 说点什么
0 / 500
图形验证码