Flag
g 全局
i 忽略大小写
m 多行 (^ 和 $ 按行)
s dotAll (. 匹配换行)
u unicode
预设
测试字符串
结果
匹配
0
输入模式和测试字符串以查看匹配。
捕获组
0
当您的模式使用括号时,捕获组会出现在这里。
速查
点击插入
正则表达式测试器 — 免费在线正则调试工具
这个测试器做什么?
输入模式,输入测试字符串,每条匹配实时高亮。捕获组面板拆开显示每个 (…) 捕获的内容,包括命名组。在工具栏切换 g、i、m、s、u 五个 flag,结果在每次变动时更新。模式无效时,JavaScript 引擎的错误信息出现在状态栏,您直接看到出错的位置。
如何使用
- 在工具栏输入框中输入 正则模式。
- 切换模式旁边的 flag(g、i、m、s、u)。
- 在左侧面板输入 测试字符串,匹配实时高亮。
- 在右侧面板查看每条 匹配 和 捕获组。
- 选一个 预设(邮箱、网址、IP、十六进制、日期、电话)加载示例,或点击 速查 中的符号把它插入到模式里。
常见问题
g、i、m、s、u 标志有什么区别?
g(全局)在第一个匹配之后继续匹配,因此你能看到所有匹配项而不仅是一个。i(忽略大小写)让 [A-Z] 也匹配小写。m(多行)让 ^ 和 $ 匹配每一行的开头和结尾,而非整个字符串。s(dotAll)让 . 匹配换行符。u(unicode)启用完整 Unicode 处理——处理 \p{Emoji} 或星平面字符时需要。
为什么我的模式报错 'invalid regular expression'?
通常是未转义的特殊字符或未闭合的分组。括号和圆括号必须配对:(foo、[a-z、foo) 都会报错。若从代码复制,JavaScript 字符串字面量中的反斜杠需要加倍。本工具会显示 JavaScript 引擎的错误信息,让你看清问题所在。
什么是捕获组?
用(圆括号)包裹的内容会被单独捕获并显示在 Capture Groups 面板中。用它提取匹配的某些部分——例如 /(\d{4})-(\d{2})-(\d{2})/ 会捕获年、月、日。用 (?:…) 进行不捕获的分组,用 (?<name>…) 创建命名组。
本工具支持 PCRE 或 Python 正则吗?
它使用 JavaScript 正则引擎(ECMAScript),与 PCRE 相近但不完全相同。现代浏览器支持后顾断言。命名组使用 (?<name>…) 语法。PCRE 的递归模式和条件组不受支持。对于大多数日常模式,其行为与 Python 或 PCRE 一致。
它会把我的正则或测试字符串发送到服务器吗?
不会。正则在你的浏览器中使用 JavaScript 内置的 RegExp 引擎编译和运行,没有任何内容离开你的设备。