跳到主要内容
uencoder

发布前测试正则表达式

验证模式语法,检查每个匹配及其捕获组,并了解把正则变成宕机的回溯陷阱。

  1. 1
    正则表达式测试器 →

    输入模式(标志可选)和测试输入。每个匹配都列出其捕获组,因此你能确切看到第 1、2……组包含什么——包括空匹配,它们被标记而非无限循环。

  2. 2

    发布前用三类输入测试:正常路径、空字符串(形如 (.*)* 的模式以意外方式匹配它)、以及针对你的模式构造的对抗输入。锚点很重要:当设置 m 标志时 ^ 和 $ 锚定行首行尾,否则锚定字符串两端——在单行上有效的模式在多行文本上可能失常。

  3. 3

    回溯警示:嵌套量词如 (a+)+ 或 (\w+\s?)* 在构造输入上可能指数级爆炸——这就是 ReDoS,一种真实的可用性漏洞。本工具在带硬超时的 worker 中运行模式,因此病态模式在此失败而非冻结你的浏览器,但你的生产服务器需要同样的防护(或具有线性时间保证的正则引擎如 RE2)。

  4. 4
    正则表达式替换器 →

    模式验证后,在同一测试语料上预览替换(含 $1 反向引用),再接入代码。

常见问题

什么是灾难性回溯(ReDoS)?
当模式允许同一输入子串以多种方式匹配(嵌套量词、重叠分支),引擎可能尝试指数级多的组合。攻击者构造的字符串能让 CPU 忙碌数小时——一个 HTTP 参数即可造成拒绝服务。
为什么我的匹配返回空字符串?
每个部分都可选的模式(如 (a)*)在每个位置匹配空字符串。工具会标出这些,以便你添加必需组件或长度守卫。

解决此任务的工作流

相关工具