在线工具

工具箱 › 开发 › 正则测试

正则表达式测试

正则表达式在线测试工具,实时高亮命中的文本并列出每处匹配的索引与捕获分组,可切换忽略大小写等常用标志,内置手机号、邮箱、日期等常用正则。纯前端运行。

标志
常用正则

匹配列表

#匹配内容索引位置捕获组

五个开关各自管什么

i 忽略大小写;g 全局匹配(不勾就只找第一处);m 多行模式,让 ^ 和 $ 匹配每一行的行首行尾;s 让点号也能匹配换行;u 开启 Unicode 模式,处理中文、emoji 和 \p{...} 这类属性转义时基本都要勾。

内部扫描时会强制加上 g 才能逐条枚举,但展示层面仍按你勾选的语义来 —— 没勾 g 就只列第一个匹配,跟代码里的实际行为保持一致,不会出现「页面能匹配到但代码里匹配不到」的错觉。

替换框里能写什么

替换预览支持原生语法:$1、$2 取捕获组,$& 取整个匹配,$<name> 取命名分组。命名分组在正则里写成 (?<year>\d{4}),替换时就能用 $<year> 引用。

替换框为空时点复制,复制出来的是匹配结果的表格(序号、内容、位置区间、捕获组),可以直接贴进表格软件;填了替换内容则复制替换后的结果。

两道保护,避免把浏览器卡死

待匹配文本超过 20 万字符会提示可能卡顿;匹配结果上限 5000 条,超过就停止枚举并告诉你实际数量。这两个阈值是为了接住「.*」这类容易写出灾难性回溯的写法。

三个输入框都有约 120 毫秒防抖,改正则或改文本时不会每敲一个字符就全量重扫一遍。

内置示例只做通用匹配,别当校验器

页面给了 10 个常用正则(手机号、邮箱、IP、身份证等)做起点,它们匹配的是「格式形状」,不是严格校验:IPv4 那条不判断每段是否 ≤255,身份证那条不校验最后一位校验码,日期那条不判断 2 月有没有 30 号。

真要做准入校验,请在后端用权威库再过一遍。前端正则的作用是提前挡掉明显的输入错误,不是做最终裁决。

敏感文本可以就地测试

匹配、高亮、替换预览全部用浏览器原生 RegExp 在本地完成,没有网络请求。日志片段、含手机号或身份证号的样本文本可以直接粘进来调正则,不用先脱敏。

正则写错时不会清空上一次的高亮结果 —— 改的过程中界面始终是可读的,不会闪成一片空白。

语法边界

只支持 JavaScript 的正则语法。其他语言里的专有写法(Python 的 (?P<name>)、PCRE 的一些扩展)在这里不一定认,命名分组请用 JS 的 (?<name>)。

嵌套捕获组重叠时,高亮只标出先命中的那个 —— 这是实现上的取舍,不影响匹配结果本身。极老的浏览器对后行断言 (?<=...) 支持不全,遇到报错先查浏览器版本。

常见问题

为什么没勾 g 只显示一个匹配?

这就是原生语义:不带 g 的正则只匹配第一处。内部扫描虽强制加 g 以枚举,但展示按你勾选的语义来,避免和代码里的实际行为不一致。

内置的身份正则能直接用来校验吗?

不能当最终校验。它只匹配格式形状,不校验校验位;手机号、邮箱同理。正式校验请在后端用权威库完成。

文本很长时会卡吗?

超过 20 万字符会给出提示,匹配结果上限 5000 条。若明显无响应,多半是正则本身存在灾难性回溯,先简化写法。