Toolify

正则表达式测试器 (实时匹配、分组、替换)

输入正则与测试文本 — 输入时匹配实时高亮。切换 flag (g/i/m/s/u)、查看捕获组、预览替换。

Flag
匹配 (4)
Hello World, this is a Regex Tester.

工作原理

Flag 的作用

g (global): 找所有匹配, 不只第一个。replace-all 必需。i (case-insensitive): /[a-z]/i 匹配大小写。m (multiline): ^ 与 $ 在换行处匹配, 不仅串首尾。s (dotall): . 也匹配换行。u (unicode): 正确处理 0xFFFF 以上码点 (表情、代理对中的 CJK)。

多数人从 /g/i/m 开始。/s/ 在多行文本匹配时有用。可能遇到表情或非 BMP 字符时建议 /u/ — 否则 /./ 不会把 4 字节表情当成单字符。

捕获组与替换

圆括号建捕获组: /(\d{4})-(\d{2})/ 在 '2026-05' 上分别捕获 '2026' 与 '05'。在替换中用 $1、$2 引用。命名组用 (?<name>...), 替换中用 $<name>。

常见替换技巧: $& 插入整体匹配。$1、$2 等插入捕获组。$$ 插入字面 $。这里的替换预览让你在真实文本上跑同模式前先检查 — 比直接在生产数据上跑安全得多。

要注意的陷阱

反斜杠转义。要匹配字面 '.', 用 '\.'。在 JavaScript 源串中是 '\\.', 但本工具中你只输入 '\.', 因为是正则源。

灾难性回溯。/(a+)+/ 这样的模式在 'aaaa…!' 上可能永远跑不完。如果测试似乎卡住, 你的正则可能有嵌套量词。简化或用占有性/原子组 (JS 正则没有; 用细致设计代替)。

贪婪 vs 懒惰。/<.+>/ 在 '<a><b>' 上匹配 '<a><b>' (贪婪)。/<.+?>/ 匹配 '<a>' (懒惰)。按用例选对的。

常见问题

用哪种正则风格?

JavaScript ECMAScript 正则 (你浏览器实现的)。与 PHP、.NET、Python 用的 PCRE 略有不同。

为什么 lookbehind 不工作?

在现代浏览器中工作 — Chrome、Firefox、Safari、Edge 自 2021 年起都支持 (?<=...) 与 (?<!...)。如果你的不行, 浏览器可能过旧。

'u' flag 做什么?

启用正确 Unicode 处理。表情如 🎉 (UTF-16 代理对) 在 /u/ 下被当成一个字符, 默认模式下被当两个。

如何匹配制表符或换行?

\t 制表符, \n 换行, \r 回车, \s 含所有这些的任意空白。

为什么我的替换不工作?

最常见, 你忘了 'g' flag — 没 'g' 的替换只换第一个匹配。切换 'g' 替换全部。

可处理超长文本?

可以, 几 MB 内。再大浏览器可能变慢。避免在长输入上跑灾难模式 (嵌套量词)。

数据会上传吗?

不会。模式与文本仅本地处理。

有正则速查表吗?

搜「JavaScript regex cheat sheet」。MDN 的 RegExp 页是权威参考。

相关工具

最后更新: