正则表达式测试器(JavaScript)
测试正则表达式在文本中匹配了什么:用表格列出每个匹配的位置和捕获组,并预览查找替换的结果。基于 JavaScript 正则引擎。
输入表达式和示例文本,按“计算”后即可准确看到正则表达式匹配了什么——每个匹配的位置及其捕获组。测试器使用浏览器自带的 JavaScript RegExp 引擎,也就是 JavaScript 程序所用的同一套 RegExp API,并可以在把表达式放进代码之前,预览使用 $1 引用的查找替换结果。
使用方法
- 输入不带斜杠的表达式,或粘贴形如
/\d+/gi的字面量。 - 勾选所需的标志:g、i、m、s 或 u。
- 粘贴要搜索的文本。
- 也可以输入替换内容,预览
text.replace()的结果。 - 按“计算”。先看匹配数量,再看匹配及其分组的表格。
计算公式
重复:match = re.exec(text)(从 re.lastIndex 开始),只要设置了 g 标志
没有 g 时只返回第一个匹配。位置按 UTF-16 代码单元从 0 开始计数,与 JavaScript 中的 match.index 一致。空匹配之后搜索会向前移动一个位置(u 或 v 模式下为一个码位),所以 x* 这样的表达式不会无限循环。表达式在单独的 Worker 中运行,限时两秒;运行缓慢的表达式会被终止,不会阻塞页面。
示例
默认表达式 (\d{4})-(\d{2})-(\d{2}) 在示例句子中找到 2 个匹配:索引 15 处的 2026-03-15 和索引 30 处的 2026-10-01,各有 3 个分组(年、月、日)。2026/12/01 因使用斜杠而被跳过。替换 $2/$3/$1 会把句子变成“Invoices dated 03/15/2026 and 10/01/2026 are due…”。
常见问题
我的正则在 Python、PHP 或 Java 里表现一样吗?
字符类、量词、分组和锚点等基础部分是通用的,但各语言在占有量词(JavaScript 没有)、命名组语法和某些转义等特性上有差异。请在实际使用的语言中重新测试边界情况。
为什么只得到一个匹配?
因为 g(全局)标志没有开启。没有它时,JavaScript 在第一个匹配处就停止,replace() 也只替换这一个。
为什么点号不能跨行匹配?
默认情况下点号不匹配换行符。请勾选 s(dotAll),或用 [\s\S] 代替点号。
为什么我的表达式超时了?
像 (a+)+$ 这样的嵌套量词可能会回溯很久。执行在 Worker 中进行,两秒后终止。请缩短输入或简化表达式,然后重新计算。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/regex-tester/
引用此工具
kakaoCalc. (2026, November 8). 正则表达式测试器(JavaScript). https://kakao.mobile/zh/tools/regex-tester/
“正则表达式测试器(JavaScript).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/regex-tester/.