正则表达式测试器(JavaScript)

测试 JavaScript 正则表达式:高亮匹配位置、编号与命名分组,并预览替换结果;运行过久的模式(ReDoS)会自动中止。

  • 在浏览器内处理(不上传)

不需要前后的斜杠(/)。例:\d+、(?<year>\d{4})

标志

可以使用 $1、$<name>、$&(整个匹配)和 $$($ 本身)。

模式最多 1,000 个字符,测试字符串最多 100,000 个字符;超过 1 秒的匹配会自动中止。

运行中…

使用方法

  1. 输入正则表达式模式,并勾选需要的标志(g、i、m 等)。
  2. 输入测试字符串后,匹配的位置会高亮显示,并列出位置和分组。
  3. 输入替换字符串(可用 $1、$<name> 等)即可预览替换结果并复制。

常见问题

使用哪种正则表达式引擎?

使用你浏览器内置的 JavaScript 引擎(RegExp)。部分语法和行为与 PCRE、Python、Java 不同。

会不会让页面卡死?

不会。匹配在独立的 Web Worker 中运行,超过 1 秒就会停止 Worker 并显示“运行过久”,即使遇到 ^(a+)+$ 这类灾难性回溯,页面仍可操作。

匹配空字符串的模式会死循环吗?

不会。匹配空字符串后会前进到下一个位置(使用 u、v 标志时按完整字符前进),因此不会死循环。

注意事项与限制

  • 你输入的内容只在本页面处理,不会发送到 YUCTS 的服务器。
  • 模式上限 1,000 个字符,测试字符串上限 100,000 个字符;高亮和列表只显示前 1,000 处。
  • 可用的语法和标志(如 v、d)取决于浏览器版本,不支持的标志无法勾选。
  • 1 秒的限制受设备性能影响,较慢的设备可能连普通模式也会被中止。
  • Safari(JavaScriptCore)在回溯超过一定量时会自行停止搜索并返回“没有匹配”。本工具会对耗时的运行显示提示,但无法判断该结果是否正确。

数据来源