首页 › 开发工具 › 正则表达式测试工具

正则表达式测试工具

输入正则表达式与修饰符(默认 g),即时测试文本并高亮所有命中片段,列出每条匹配的内容、起始与结束位置、捕获组和命名组,同时给出命中数、最长匹配与是否命中等结论,语法错误会直接说明原因。

数据来源:ECMA-262 RegExp 语法与修饰符(g / i / m / s / u / y)

命中数量3处
是否匹配匹配成功
最长匹配2026-0001
最长匹配长度9字符
命中字符总数26字符
捕获组 / 命名组0 / 0个
文本长度76字符

匹配明细(最多显示 200 条,位置从 0 开始计数)

序号匹配内容起始位置结束位置捕获组 / 命名组
12026-0001413无
22026-00021625无
3010-88883543无
订单号 2026-0001 与 2026-0002 已发货,客服电话 010-88886666,邮编 100000,共 3 个包裹合计 12.5 千克。

位置与大多数语言一致,从 0 开始且结束位置不含;未加 g 修饰符时只测试第一处命中。空匹配(例如 a* 对不含 a 的文本)会标注为空匹配。

本页所有计算在浏览器内完成,输入内容不会被上传。

计算口径

表达式按 ECMA-262 语义交给 RegExp 构造,修饰符只保留 d g i m s u v y 这些合法字符。遍历时逐次调用 exec,并在命中为空串时把 lastIndex 手动前移 1 位,因此 (a*)、\b 这类会产生零长度匹配的模式不会死循环。带 g 时列出全部命中,不带 g 时只判定第一处。捕获组取自同一次 exec 的下标 1 到 n,命名组来自 (?<name>…) 。

使用说明

  • 在表达式框里直接写 \d+(网页输入框不需要把反斜杠再翻倍)
  • 想忽略大小写就在修饰符填 gi,多行锚点用 gm
  • 结果区的高亮预览保留了原文,方括号底色处就是每条命中的实际位置

常见问题

为什么我写 \d 匹配不到数字?

如果从代码里复制,源码中写的是 "\\d"(字符串转义后才是 \d)。本工具的输入框按正则原样理解,只需写 \d。

起始位置为什么从 0 开始?

JS、Python、Java 等语言的字符串下标都从 0 计数,结束位置是不包含的(不含右端点),所以一条 3 个字符的匹配在位置 5 会显示起始 5、结束 8。

匹配 5000 条就停了怎么办?

这是防卡死的遍历上限。把文本切成段落分批测试,或收紧表达式(加上边界、更具体的字符类)来减少命中数量。