🧪

正则表达式实验室

本地实时匹配、高亮、替换与耗时检测,样本文本不出浏览器。

🔒 纯本地匹配 ⚡ 毫秒级耗时 🎯 捕获组展示 🔁 替换预览 ⚠️ 回溯风险检测 🤖 AI 解读 🌙 黑夜模式
🔒
隐私保护:所有匹配均在本地浏览器完成;AI 解读仅发送正则本身与统计指标,绝不发送你的样本文本。

🧬正则与标志

不需要两端的 / 斜杠,直接写表达式本体。

📄样本与替换

🎯匹配结果输入即实时计算

🧪

输入正则与样本后自动出结果

匹配总数–
捕获组数–
耗时–
⚠️ 可能存在灾难性回溯风险

① 匹配列表

#匹配文本位置捕获组

② 样本高亮

高亮基于前 50 条匹配渲染。

③ 替换结果

🤖 AI 正则参谋
点下方按钮,让 AI 解读这条正则的含义,或给出优化建议。AI 只会收到正则本身与统计指标,不会看到你的样本文本。
📐
计算口径:匹配由浏览器内置 JavaScript RegExp 引擎在本地执行;未勾选 g 时只取首个匹配,勾选 g 时统计全部匹配;匹配总数为真实总数,匹配列表仅展示前 50 条;捕获组数按 pattern 逐字符扫描统计(跳过转义 \( 与字符集 [...],不计 (?: (?= (?! (?<= (?静态检测到嵌套量词(如 (a+)+)时不执行匹配,直接提示「可能存在灾难性回溯风险」,本次匹配耗时超过 100ms 也会给出同样提示;替换模板留空则不执行替换(replaced 为 null)。AI 请求仅包含 pattern、flags、捕获组数、匹配总数、耗时 5 个字段。

为什么要有个「正则实验室」

写正则最怕两件事:一是自以为匹配了其实没匹配(边界、转义、贪婪性看错),二是线上文本格式一换就全崩。把正则和真实样本放进实验室,匹配总数、每条匹配的文本与位置、各捕获组的取值一目了然,样本原文用 mark 高亮标出命中片段,替换结果实时预览,还能用耗时数据感受这条正则的「贵」与「便宜」。

灾难性回溯是什么

形如 (a+)+、(\w*)*$ 的「嵌套量词」在遇到无法匹配的长文本时,内部组合方式会呈指数级爆炸,可能让页面卡死数秒甚至数分钟。本工具静态检测到这类结构时会跳过实际匹配并给出橙色警示;更稳妥的写法是去掉嵌套(如 a+)、改用更精确的字符集或限定长度。

使用方法

  1. 在「正则表达式」里写入表达式本体(不需要两端斜杠);
  2. 按需勾选 g/i/m/s 标志,右侧实时出匹配总数、捕获组数与耗时;
  3. 粘贴样本文本,匹配列表逐条展示匹配文本、位置与捕获组,样本原文同步高亮;
  4. 填「替换模板」可预览替换结果,支持 $1、$2 等分组引用,一键复制;
  5. 点「AI 解读」「AI 优化建议」获取含义讲解与优化思路。输入自动保存在本浏览器。

更新记录

  • 1.02026-10-15全新上线:g/i/m/s 标志、实时匹配与 mark 高亮、捕获组展示、$1 分组引用替换预览、毫秒级耗时统计、灾难性回溯静态检测(命中即跳过执行并橙色警示)、接入 AI 正则参谋;纯本地计算,样本文本不上传,支持黑夜模式。

常见问题

为什么我的正则在代码里能跑,这里提示无效?
本工具使用 JavaScript 正则引擎,语法与 PCRE(PHP/Java)略有差异:JS 不支持 \R、\A 等写法,旧浏览器不支持后行断言 (?<=...)。若报错,请按错误提示检查括号配对与转义。
g 标志勾不勾有什么区别?
不勾 g 时只统计并展示第一个匹配;勾上 g 后会遍历全部匹配,「匹配总数」才是真实总数。替换也受 g 影响:不勾 g 只替换第一处。
替换里的 $1、$2 是什么?
对应正则里第 1、2 对括号捕获到的内容。例如正则 (\d{3})-(\d{4}) 匹配「123-4567」,替换模板 [$2]-[$1] 的结果就是「[4567]-[123]」。留空替换模板时不执行替换。
为什么提示「可能存在灾难性回溯风险」后没有匹配结果?
形如 (a+)+ 的嵌套量词在失配时回溯组合呈指数爆炸,实测 30 个字符的失配文本就要跑两分多钟。为保护页面,工具静态命中这类结构时直接跳过执行并给出警示;请简化正则后再试。
为什么只显示前 50 条匹配?
为避免上万条匹配把页面撑爆,列表与高亮最多渲染前 50 条;但「匹配总数」统计的是完整结果,不受截断影响。
我的样本文本会被上传吗?
不会。所有匹配、替换计算都在你的浏览器本地完成;点 AI 按钮时也只发送正则表达式本身、标志、捕获组数、匹配总数与耗时,绝不包含样本文本和匹配明细。

💬 留言板 0

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

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

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