//
HIGHLIGHTED RESULT
工具介绍
左边写正则和标志,右边贴待测文本,页面用浏览器的 RegExp 实时列出匹配。它适合调试将要放进 JavaScript 的表达式,不能保证和 Python、Java 或 grep 的结果一致。
模式字符串直接传给 new RegExp,不要再包一层斜杠。默认标志是 g。带 g 时从左到右找全部匹配;若某次匹配是空字符串,lastIndex 会加 1,避免死循环。不带 g 时只返回第一处。每个结果包含匹配文本、起始下标,以及括号捕获组。可选标志还有 i、m、s、u、y。
计算示例
输入:模式 \d{4}-\d{2}-\d{2},标志 g,文本「开始 2024-01-01,结束 2024-02-01。」
输出:两处:2024-01-01(下标 3)、2024-02-01(下标 17)
输入:模式 (\w+)@([\w.]+),标志 g,文本「写给 ada@example.com 和 bob@test.cn」
输出:ada@example.com 的组是 ada 与 example.com;bob@test.cn 的组是 bob 与 test.cn
输入:模式 cat,标志 gi,文本「Cat cat CAT」
输出:Cat、cat、CAT 三处都命中
使用限制
- 引擎是 JavaScript。可变长度的回顾后发、部分占有量词,这里不能用。
- \w 在没有 u 标志时只含 ASCII 的字母、数字和下划线,不包含汉字。
- 页面不执行替换,只显示匹配。
常见错误
- 把 /abc/g 整段贴进模式框。斜杠会被当成要匹配的字符,g 也不会变成标志。
- 忘了勾 g,于是只看到第一处,以为后面的没有匹配。
- 在别的语言里能用的 \p{Han},这里必须同时带 u 标志。
常见问题
下标从 0 开始吗?▾
是。第一例里「开始」占两个字符,再加一个空格,所以第一段日期从下标 3 开始。
分组怎么看?▾
圆括号按从左到右编号,结果里的 groups 就是这些括号抓到的文本,不含整个匹配本身。
为什么复杂表达式会卡?▾
有些写法会让引擎大量回溯。页面在主线程里执行,过长的文本加上含糊的 .* 可能让标签页卡住。