MUTools

文本

正则表达式测试器

正则表达式测试器是一款只需输入模式与测试文本,就能实时查看匹配位置高亮、捕获组内容、替换预览以及按构成元素拆分的语法说明的工具。无论是 Web 开发中的表单校验设计、从日志中提取 ID、对文本做一次性的批量替换,还是边动手边学习正则表达式,都能派上用场。

g
标志
正则表达式预设
测试文本
输入模式和测试文本后,匹配结果会显示在这里。
正则表达式语法说明

输入模式后,按构成元素拆分的说明会显示在这里。

把当前模式、标志、测试文本与替换模板保存到 URL,通过链接分享。

你输入的模式与文本全程在浏览器中处理,不会发送到任何服务器。

正则表达式测试器是什么?

正则表达式测试器是一款只需输入模式与测试文本,就能实时查看匹配位置高亮、捕获组内容、替换预览以及按构成元素拆分的语法说明的工具。无论是 Web 开发中的表单校验设计、从日志中提取 ID、对文本做一次性的批量替换,还是边动手边学习正则表达式,都能派上用场。

g / i / m / s / u / y 标志可以单独切换;当模式不合法时,会立即在输入框下方显示错误原因,而不会让页面崩溃。匹配数量、捕获组数量以及执行时间(毫秒)会与结果一同显示,方便确认复杂模式的行为或大致评估性能。

电子邮件地址、URL、电话号码(日本)、邮编、IPv4、日期、HTML 标签、十六进制颜色代码等常用模式都可以从预设菜单中一键插入。在替换模板里可以使用 $& 表示整体匹配、$1 $2 表示第 1、2 个捕获、$<name> 引用命名捕获,结果会在"匹配结果"与"替换结果"两个标签页之间切换。点击"复制分享 URL"按钮可以把当前的模式、标志、测试文本和替换模板一并打包到 URL 中,分享给团队成员。

所有处理都在你的浏览器内完成。你输入的模式与测试文本不会发送到任何服务器,可以放心地在含有公司内部信息或个人数据的文本上试用正则。全程在浏览器中完成。

使用方法

  1. 在"模式"输入框中填入正则表达式。也可以从预设菜单中一键插入电子邮件、URL 等常用模式。
  2. 切换右侧的 g / i / m / s / u / y 标志,控制全局匹配、是否区分大小写等行为。
  3. 把要匹配的文本粘贴到"测试文本"输入框。可以用"插入示例"按钮立即看到效果。
  4. 下方结果区会高亮所有匹配位置,并显示匹配数、捕获组与执行时间。
  5. 切换到"替换结果"标签页,在"替换模板"中填入替换后的字符串(可以用 $1 或 $& 等引用),即可看到实时替换预览。
  6. 在"正则表达式语法说明"中可以看到把当前模式按构成元素拆分后的中文说明。
  7. 点击"复制分享 URL",当前的模式、标志、测试文本与替换模板会被打包到 URL 中,他人通过这条链接就能重现完全相同的画面。

使用场景

  • 希望先用实际字符串验证一遍表单校验正则,再写进生产代码的 Web 工程师。
  • 需要从服务器日志、访问日志中按规则提取 ID、路径或状态码的运维。
  • 在对稿件或 CSV 数据做批量替换之前,想要安全地预览替换效果的撰稿人与编辑。
  • 在代码评审或技术分享中,希望用分享 URL 直接把正则示例与测试用例发给同事的负责人。
  • 在学习正则表达式时,想一边动手一边查看每个语法元素含义的初学者。

注意事项

  • 本工具基于浏览器内建的 JavaScript 正则表达式(ECMAScript RegExp),不支持 PCRE 或 Oniguruma 特有的语法(如 \K、可变长的反向断言等)。
  • 当 g 标志未开启时,匹配与替换都只针对第 1 个结果。要处理全部匹配请开启 g 标志。
  • 开启 u 标志可以正确处理代理对与 Unicode 属性(\p{...}),同时字符集合中的转义要求会变严格。如果行为变化请检查 u 标志的开关。
  • 为避免极端情况下的卡顿,测试文本超过 50 万字符时会在计算前被截断,匹配结果数最多保留 10,000 项。
  • 由于"复制分享 URL"会把测试文本作为查询字符串放入 URL,请在分享前确认其中不包含敏感内容。当文本较长时会被自动从 URL 中省略,并在界面上提示。
  • 语法说明覆盖了主要构成(字符类、量词、组、选择、字符集合)。前瞻、后顾以及 Unicode 属性等会以"不支持的语法"按原文显示。

常见问题

我输入的模式与文本会发送到服务器吗?
不会。模式编译、匹配、替换、语法说明以及执行时间的计量,全部在你的浏览器中完成。可以放心地在含有公司内部信息或个人数据的文本上试用。
有 PCRE 模式吗?
本工具只支持浏览器内建的 JavaScript 正则表达式引擎,不支持 PCRE 特有的语法(如 \K、可变长后顾、递归引用等)。如果是用于 Web 前端或表单校验,本工具中的结果可以直接对应到生产环境的行为。
我没有加 g 标志,为什么只匹配 / 替换了 1 个?
JavaScript 的正则表达式在 g 标志关闭时只处理第 1 个结果。要匹配 / 替换全部请在标志栏中开启 g。两个标签页在 g 关闭时都会显示相应提示。
对方打开分享 URL 后,能看到完全相同的模式与结果吗?
可以。链接中以查询字符串的形式包含了当前的模式、标志、测试文本与替换模板,对方打开后就能在自己的浏览器中立即看到相同的匹配与替换结果。但是当测试文本很长时会从 URL 中自动省略。
为什么执行时间(毫秒)每次都会有些差异?
这是因为浏览器内部的 JIT 预热、与其他标签页 / 任务共享 CPU、以及计时精度的限制等因素造成的。请把这个数字当作"修改模式前后是否大幅变化"的对比指标,而不是绝对值。