M ToolsMio

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

在线测试和调试正则表达式,实时高亮匹配、显示捕获组、替换模式、模式解释和常用模式库(含中国手机号、身份证等)。100% 浏览器端处理,免费无需注册。

/
/
模式:
正则表达式测试工具 — 在线测试与调试

ToolsMio Regex Tester: real-time match highlighting, capture groups, replace mode, pattern explanation, built-in library. 在线测试与调试正则表达式,100% 浏览器端处理,免费使用。
2 个匹配
#1 · 位置 30 · 长度 5
Regex
#2 · 位置 36 · 长度 6
Tester

字符类

.任意字符(除换行)
\d数字 [0-9]
\D非数字
\w单词字符 [A-Za-z0-9_]
\W非单词字符
\s空白字符(空格/制表/换行)
\S非空白字符
[abc]a、b 或 c 之一
[^abc]除 a、b、c 外的字符
[a-z]a 到 z 范围

锚点

^行/字符串起始
$行/字符串结束
\b单词边界
\B非单词边界

量词

*0 次或多次
+1 次或多次
?0 或 1 次(也表示惰性)
{n}恰好 n 次
{n,}至少 n 次
{n,m}n 到 m 次
*?惰性 0 次或多次

分组与反向引用

(abc)捕获分组
(?:abc)非捕获分组
(?<name>abc)命名捕获分组
\1反向引用第 1 个分组
a|ba 或 b(择一)

环视

(?=abc)正向先行(后面是 abc)
(?!abc)负向先行(后面不是 abc)
(?<=abc)正向后行(前面是 abc)
(?<!abc)负向后行(前面不是 abc)

标志

g全局匹配
i忽略大小写
m多行模式
s. 匹配换行
uUnicode 模式
y粘性匹配
d返回索引

功能特性

实时匹配高亮

边输入正则边在测试文本中高亮匹配结果,捕获组用不同颜色区分,一眼看清每一部分匹配到了什么。

模式解释面板

把你的正则拆成中文解释:锚点、字符类、量词、分组、断言 —— 让你理解它为什么匹配(或不匹配)。

区域化模式库

中文版内置中国手机号、身份证、邮编、车牌号等本地化模式 + 邮箱/URL/IPv4/UUID 等通用模式 16+ 个,一键载入。英文版含 US ZIP / SSN / 信用卡等。

匹配与替换模式

一键切换匹配模式(查看所有匹配和捕获组)与替换模式(实时预览替换结果,支持 $1、$2 反向引用)。

内置速查表

可折叠的快速参考,覆盖字符类、锚点、量词、分组、断言、标志位 —— 不用离开页面查语法。

100% 浏览器端处理

正则和测试文本完全在浏览器中用原生 JavaScript RegExp 处理,不上传任何服务器,数据完全私密。

正则表达式测试工具使用方法

  1. 在 Pattern 输入框中输入或粘贴你的正则表达式,例如 \d{4}-\d{2}-\d{2}
  2. 切换需要的标志:g(全局)、i(忽略大小写)、m(多行)、s(点匹配换行)、u(Unicode)、y(粘性)、d(索引)
  3. 把测试文本粘贴到 Test String 区域 —— 匹配会实时高亮
  4. 在 Matches 面板查看每个匹配的位置、长度和捕获组
  5. 切换到 Replace 模式并输入替换字符串(用 $1、$2 引用捕获组)预览替换结果

常见使用场景

验证邮箱、手机号等表单输入

在把正则贴进代码之前,用工具构建和测试表单验证模式。确认边界情况(比如邮箱本地部分的 +、各国手机号格式)确实能匹配。

调试已有的正则

把线上"突然不工作"的正则复制过来,对失败的输入运行。Explanation 面板经常会暴露一个无意中匹配过多内容的 . 字符。

批量查找与替换

用 Replace 模式清理脏文本:合并多余空格、转换日期格式、改写 URL、提取字段。结果复制回你的编辑器即可。

正则学习

刚接触正则?从模式库载入一个模式,研究 Explanation 面板,然后微调模式观察匹配怎么变。Cheatsheet 一栏覆盖所有语法。

代码审查准备

在批准添加正则的 PR 之前,把它粘到工具里验证作者声称的边界情况是否成立。灾难性回溯模式会立即暴露。

日志解析

在把模式部署到日志管道或 grep 工作流之前,先用样本日志行测试提取时间戳、状态码或 trace ID 的模式。

使用技巧

常见问题

什么是正则表达式测试工具?
正则测试工具让你写一个正则表达式、对样本文本运行它、立即看到匹配结果。它会高亮匹配、列出捕获组,并(在我们工具中)用中文解释模式的每一部分含义 —— 既能用于学习,也能用于调试。
这个工具支持哪种正则语法?
本工具使用浏览器原生的 JavaScript RegExp 引擎,符合 ECMAScript 2018+ 标准。支持所有标准特性:捕获组、命名组 (?<name>...)、前瞻 (?=...)、后顾 (?<=...)、带 u 标志的 Unicode 属性转义 \p{...}、带 d 标志的匹配位置索引。不支持 PCRE 独有的 (?>...) 原子组。
如何使用捕获组和命名组?
用圆括号包裹模式的一部分会创建编号捕获组:(\d{4})-(\d{2})-(\d{2}) 创建三个组。命名组写法是 (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})。Matches 面板会显示每个组的编号、名称和捕获的文本。
匹配模式和替换模式有什么区别?
匹配模式显示测试文本中所有匹配位置和捕获组。替换模式接受替换字符串(支持 $1、$2、$<name> 反向引用),显示替换后的结果。匹配用于检查,替换用于变换文本。
如何避免灾难性回溯?
像 (a+)+ 这样的模式作用在长字符串上会因指数级回溯让浏览器卡死。工具把测试文本限制在 50KB、匹配数限制在 1000 个来保护你,但真正的解法是写正则时避免嵌套量词 —— 比如用 (?:[^"]*) 而不是 (.*) 来匹配定界符之间的内容。
我的正则会发送到服务器吗?
不会。正则、测试文本和替换字符串完全在你的浏览器中用原生 JavaScript RegExp API 处理,不会离开你的设备。可以通过 DevTools → Network 验证:你输入时不会产生任何网络请求。

更多工具