正则表达式测试

实时高亮匹配与分组捕获,标注常见语法错误。

正则表达式的坑基本都在「看着对,实际不匹配」。本页把模式与测试文本放在一起实时跑,列出每次命中的下标区间和捕获组(含命名分组),另有一条替换预览,不匹配的原因当场看出来。

只实现 JavaScript 方言(ECMAScript),标志位为 g、i、m、s、u、y,六个都以按钮多选;PCRE 里的 \d 默认 ASCII、(?<name>…) 与后向断言的支持范围在各语言不同,跨语言移植时要重新验证。

正则表达式测试怎么用

  • 写模式看命中:顶部一行填正则、六个标志位按按钮切换(默认 g 与 i 是开的)。命中视图有「高亮 / 命中列表」两态:高亮在测试文本里给每处命中铺底色,命中列表按行列出序号、下标区间、命中文本与各捕获组;点列表里的某一行会切回高亮并把那一处单独标成当前项。
  • 替换预览:替换串填在命中视图下方那一行:$1 引用第 1 组、$& 是整段命中,反向引用按 String.prototype.replace 的规则原样解析。替换后的全文放在默认收起的「替换预览」折叠区里,折叠着它照样参与计算并标注替换了几处、输出多少字符;没开 g 只替换第 1 处。
  • 语法错误定位:正则无法编译时横幅提示原因(未闭合字符类、量词位置错误等)并清空上一轮的命中与替换结果,不会静默留着旧答案让你误读;还没写模式时命中视图直接标「等待输入正则」。
  • 吸顶与重算:本工具把模式与标志位钉在页面顶部(往下滚也跟着),实时跑「测试文本」和「命中视图」两栏;改一个字符约 150 毫秒后重算。

常见问题

匹配数量有上限吗?

有,两处各有一条:命中最多收集 2000 条(超出即停止并在视图里标注截断),高亮视图最多渲染 20000 字符的文本。这是为了不让你一个贪婪回溯的正则把标签页卡死;命中列表与计数不受高亮上限影响,照常算。

为什么空字符串会匹配每一行?

空正则模式在 g 标志下表示「每个位置都能匹配零长度」。工具在 lastIndex 不前进时手动加一,不会死循环,但你要意识到模式可能写漏了。

u 标志有什么影响?

开启后按码点而非 UTF-16 单元匹配,. 能匹配 emoji,量词作用在完整字符上;同时会对非法转义报错。处理中文建议打开 u。

六个标志位分别做什么?

「六个标志位分别做什么」折叠表逐条说明它们各自改变什么(比如 u 会拒绝非法转义、y 只认 lastIndex 处的锚定匹配)。

对应功能编号 #8无需安装,手机端同样可用按 Ctrl + K 换工具