正则表达式在线测试工具

实时高亮全部匹配片段,逐项展示数字捕获组与命名捕获组、位置,支持单条复制;支持 g/i/m/s/u/y 标志位切换,内置邮箱、URL、IPv4、手机号等常用模式速查;提供基于 $1/$2 与 $ 引用的替换功能。所有数据仅在浏览器本地处理。

/g
常用:
匹配结果无匹配
输入测试字符串后,匹配片段会在此高亮显示
所有数据仅在你浏览器内处理;输入上限 10000 字,匹配上限 5000 个。

常见问题

正则表达式的标志位 g/i/m/s/u/y 分别是什么意思?

g(global)全局匹配,找出全部匹配项而非仅第一个;i(ignoreCase)忽略大小写; m(multiline)多行模式,使 ^$ 匹配每行的首尾而非整个字符串的首尾; s(dotAll)使 . 能匹配换行符 \nu(unicode)Unicode 模式,正确处理中文与 Emoji 等多字节字符; y(sticky)粘滞匹配,从 lastIndex 位置开始且必须紧贴该位置。

什么是捕获组?如何用 $1 / $2 引用?

用圆括号 (...) 包裹的子模式会形成捕获组,按左括号出现顺序编号为 $1$2$3…… 例如 (\w+)@(\w+)\.(\w+) 匹配邮箱时,$1 是用户名、$2 是域名、$3 是顶级域。 在替换字符串中可用 $1$2 引用对应捕获组,$$ 转义为字面 $。 非捕获组 (?:...) 不编号、不消耗 $N。

什么是命名捕获组?如何用 $<name> 引用?

ES2018 起支持命名捕获组 (?<name>...),给捕获组起一个有意义的名字,避免按数字编号时数错顺序。 例如 (?<user>[\w.+-]+)@(?<domain>[\w-]+)\.(?<tld>[\w.-]+) 匹配邮箱, 匹配列表会同时展示 $1/$2/$3 数字组与 user / domain / tld 命名组。 替换字符串中可用 $<user>$<domain>$<tld> 引用, 也可继续用 $1$2 数字组引用(命名组同时占用数字编号)。 命名组的核心价值:可读性高、调整组顺序后无需重排替换串、长期维护更稳健。

为什么我的正则没有匹配任何结果?

常见原因:1) 忘记勾选 g 标志位导致只显示第一个匹配,本工具默认勾选;2) 正则模式中含特殊字符未转义, 如 .*+?()[]\^$| 需用 \ 转义; 3) 输入的测试字符串与模式确实不匹配;4) 模式中含中文/Emoji 但未启用 u 标志位。

如何避免正则表达式性能问题(ReDoS)?

含嵌套量词(如 (a+)+)或重叠交替(如 (a|a)*)的正则可能在恶意输入下指数级耗时,称为 ReDoS 攻击。 本工具对输入长度(10000 字)与匹配数(5000 个)设上限保护浏览器。生产环境应:1) 避免嵌套量词; 2) 优先使用具体字符类(如 [a-z])而非 .;3) 用非捕获组 (?:...) 替代捕获组; 4) 对超时敏感场景使用专门的正则超时库。

替换模式中如何使用 $1 / $2 / $<name> 引用捕获组?

切换到「替换」Tab 后,在替换字符串输入框中可用三种引用方式: $1$2$3 数字组; $<name> 命名组(ES2018,需正则用 (?<name>...)); $$ 转义为字面 $。 例如模式 (\w+)@(\w+)\.(\w+) + 替换 [$1 at $2.$3] 可将 dev@example.com 替换为 [dev at example.com];用命名组写法 (?<user>\w+)@(?<domain>\w+)\.(?<tld>\w+) + 替换 [$<user> at $<domain>.$<tld>] 结果相同但可读性更高。 本工具的替换永远使用全局匹配,所有匹配项都会被替换(即使你没勾选 g 标志位也会自动加 g)。

匹配列表中的「复制」按钮复制什么内容?

匹配列表每条匹配右侧的「复制」按钮会复制该条匹配的完整信息:序号、匹配文本、位置区间 @起-止、 所有数字捕获组 $1=... $2=...、所有命名捕获组 name=...(如有),用 Tab 分隔便于粘贴到 Excel 或编辑器。 顶部「复制匹配」按钮则一次性复制全部匹配,每条一行。

数据会上传到服务器吗?

不会。本工具完全在浏览器内运行,所有正则编译、匹配、替换逻辑由 JavaScript 在你本地执行,输入内容不会发送到任何服务器。

支持哪些 JavaScript 正则特性?

支持所有标准 ECMAScript 正则特性:字符类、量词、锚点、分组(捕获组与非捕获组)、反向引用、零宽断言( (?=...) 正向、(?!...) 负向)。命名捕获组 (?<name>...) 与 后行断言 (?<=...)(?<!...) 在现代浏览器中可用。具体兼容性请参考 MDN RegExp 文档