跳到主要内容

正则表达式在线测试 — JavaScript 正则测试工具

在线测试 JavaScript 正则表达式:实时高亮匹配,显示捕获组和命名组,支持所有标志和替换预览。耗时超过 1 秒的匹配会自动停止。

浏览器内转换 · 无需注册

//g
标志
速查表
.
除换行符外的任意字符(使用 s 标志可包含换行)
\d \w \s
数字、单词字符 [A-Za-z0-9_]、空白字符
\D \W \S
非数字、非单词字符、非空白字符
[abc] [^abc]
a、b、c 之一 / 除 a、b、c 外的任意字符
[a-z]
a 到 z 之间的任意字符
^ $
输入的开头 / 结尾(使用 m 标志时为每行的开头 / 结尾)
\b
单词边界
* + ?
0 次或多次、1 次或多次、0 次或 1 次
{2,5}
2 到 5 次({3} 恰好 3 次,{2,} 至少 2 次)
*? +?
惰性版本:尽可能少地匹配
(abc)
捕获组
(?<name>abc)
命名捕获组
(?:abc)
非捕获分组
\1 \k<name>
重复第 1 组 / 命名组匹配到的内容
a|b
a 或 b
(?=a) (?!a)
后面紧跟 a / 后面不是 a
(?<=a) (?<!a)
前面是 a / 前面不是 a
\p{L}
任意语言中的任意字母(需要 u 或 v 标志)

使用浏览器的 JavaScript(ECMAScript)正则引擎,结果与 JavaScript 代码一致。PCRE、Python、Java 等其他引擎在部分语法上有所不同。匹配在后台 Worker 中运行,超过 1 秒会停止,以防灾难性回溯拖垮页面。

使用方法

  1. 输入正则表达式并勾选所需的标志(g 会查找所有匹配)。
  2. 粘贴要测试的文本;匹配会被高亮,并列出其索引和捕获组。
  3. 开启“替换”,即可预览使用 $1 或 $<name> 引用时 String.replace 的结果。

示例

表达式:(?<user>\w+)@(\w+)\.com  标志:g
文本:[email protected], [email protected]
匹配:[email protected](user = alice,2 = example)、[email protected]
替换为 $<user> at $2 → alice at example, bob at test

功能与限制

表达式使用浏览器内置的 JavaScript RegExp 引擎运行,因此后行断言、命名组、Unicode 属性转义和 d 标志的行为与你的代码完全一致。v 标志只在浏览器支持时显示。

匹配在你设备上的 Web Worker 中进行,不上传任何内容。单次运行约 1 秒后会停止,最多列出 1,000 个匹配。

FAQ

为什么我的正则只找到一个匹配?

在 JavaScript 中,没有 g(全局)标志的正则会在第一个匹配处停止。勾选 g 即可查找所有匹配,本工具会把它们全部列出。

什么是灾难性回溯?

某些表达式(如 (a+)+$ 或 (.*)*)在几乎能匹配的文本上可能耗费指数级时间。本工具在独立的 Worker 中运行正则,并在 1 秒后停止,因此页面保持响应,并显示错误提示。

在这里测试过的正则能在 Python 或 PHP 中使用吗?

通常可以,但不一定。本工具使用 JavaScript 引擎。Python、PHP(PCRE)和 Java 在命名组、后行断言和标志等方面的功能与语法有所不同,依赖这些特性的表达式请重新检查。

格式参考资料

工具页面更新日期: