ZH
我的工具

正则表达式测试器(JavaScript)

测试正则表达式在文本中匹配了什么:用表格列出每个匹配的位置和捕获组,并预览查找替换的结果。基于 JavaScript 正则引擎。

输入不带斜杠的表达式,或粘贴形如 /ab+c/gi 的字面量。
$1、$2 … 插入捕获组,$<name> 插入命名组,$& 插入整个匹配,$$ 表示一个美元符号。留空则删除匹配内容。
我的工具 →
广告

输入表达式和示例文本,按“计算”后即可准确看到正则表达式匹配了什么——每个匹配的位置及其捕获组。测试器使用浏览器自带的 JavaScript RegExp 引擎,也就是 JavaScript 程序所用的同一套 RegExp API,并可以在把表达式放进代码之前,预览使用 $1 引用的查找替换结果。

使用方法

  1. 输入不带斜杠的表达式,或粘贴形如 /\d+/gi 的字面量。
  2. 勾选所需的标志:g、i、m、s 或 u。
  3. 粘贴要搜索的文本。
  4. 也可以输入替换内容,预览 text.replace() 的结果。
  5. 按“计算”。先看匹配数量,再看匹配及其分组的表格。

计算公式

重复: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 中进行,两秒后终止。请缩短输入或简化表达式,然后重新计算。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). 正则表达式测试器(JavaScript). https://kakao.mobile/zh/tools/regex-tester/

MLA

“正则表达式测试器(JavaScript).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/regex-tester/.

广告