正则表达式测试工具
输入正则表达式与修饰符(默认 g),即时测试文本并高亮所有命中片段,列出每条匹配的内容、起始与结束位置、捕获组和命名组,同时给出命中数、最长匹配与是否命中等结论,语法错误会直接说明原因。
数据来源:ECMA-262 RegExp 语法与修饰符(g / i / m / s / u / y)
命中数量3处
是否匹配匹配成功
最长匹配2026-0001
最长匹配长度9字符
命中字符总数26字符
捕获组 / 命名组0 / 0个
文本长度76字符
匹配明细(最多显示 200 条,位置从 0 开始计数)
| 序号 | 匹配内容 | 起始位置 | 结束位置 | 捕获组 / 命名组 |
|---|---|---|---|---|
| 1 | 2026-0001 | 4 | 13 | 无 |
| 2 | 2026-0002 | 16 | 25 | 无 |
| 3 | 010-8888 | 35 | 43 | 无 |
订单号 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 条就停了怎么办?
这是防卡死的遍历上限。把文本切成段落分批测试,或收紧表达式(加上边界、更具体的字符类)来减少命中数量。