正则表达式测试工具

实时测试 JavaScript 正则,支持全部修饰符(g i m s u y d):高亮匹配、捕获组和命名组、索引以及替换预览,并有防卡死的 Worker 保护。

//g

在后台 Worker 中使用浏览器的 JavaScript(ECMAScript)正则引擎。PCRE/Python 中的占有量词、行内 (?i) 修饰符等语法可能不受支持。

什么是 正则表达式测试?

在你输入的同时,针对文本测试 JavaScript 正则表达式。匹配项会被高亮,表格显示每个匹配及其位置、编号捕获组和命名捕获组(使用 d 修饰符时还有分组索引),可选的替换预览会显示 String.replace 的结果。模式在后台 Worker 中运行,1.5 秒后会被终止,因此灾难性的模式不会让页面卡死。

如何使用 正则表达式测试

  1. 在正则表达式中输入模式(不带斜杠)。
  2. 勾选你需要的修饰符:g、i、m、s、u、y、d。
  3. 把要搜索的文本粘贴到测试字符串中——匹配项会自动更新。
  4. 勾选将匹配项替换为…并输入替换文本(可使用 $1、$<name>、$& 等)来预览结果。

示例

输入
Pattern (?<y>\d{4})-(\d{2}) with flags g, text "a 2024-05 b 1999-12", replacement $2/$<y>
输出
2 match(es) · replaced: a 05/2024 b 12/1999

何时使用 正则表达式测试

适用于为 JavaScript、TypeScript 和 Node.js 构建和调试正则,以及用于校验规则或查找替换。其他引擎(PCRE、Python、Java、.NET、POSIX)在语法和功能上有差异——例如占有量词、(?i) 这样的内联修饰符和 \A/\Z 锚点都不可用——所以如果目标是它们,也请在对应环境中测试。

正则表达式测试 的工作原理

模式在 Web Worker 中通过 new RegExp(pattern, flags) 编译。使用 g 或 y 时,工具循环调用 exec() 并最多收集 1,000 个匹配(空匹配会按一个码位前进,以避免死循环);不使用它们时只报告第一个匹配,与 JavaScript 完全一致。每个匹配都会记录其起止索引、捕获组、命名组,以及在使用 d 修饰符时每个分组的 indices。替换预览运行 text.replace(regex, replacement)。如果 Worker 在 1,500 毫秒内没有响应,就会被终止并显示超时消息。

常见用例

  • 调试表单输入的校验模式
  • 用命名捕获组提取数据
  • 在对文件执行之前预览查找替换的结果
  • 了解 m、s、u 等修饰符如何改变匹配
  • 检查模式是否存在灾难性回溯

常见问题

为什么我的正则只找到第一个匹配?

没有 g(全局)修饰符时,JavaScript 在第一个匹配之后就会停止。勾选 g 即可列出所有匹配。

d 修饰符有什么作用?

它会为每个匹配添加 indices,给出每个捕获组的起止位置。工具会在每个分组旁边显示它们。

遇到 (a+)+$ 这样的灾难性模式会怎样?

运行它的 Worker 会在 1.5 秒后被终止,你会看到超时消息,而不是一个卡死的标签页。

和 PCRE 或 Python 的正则兼容吗?

基本语法大体兼容,但并不完全。它使用的是你浏览器的 ECMAScript 引擎。

探索更多分类