反馈途径·目前大家有任务反馈可以直接发我邮箱:lyfs814@163.com陆续上线高价值工具,敬请期待! 欢迎使用蜗牛工具箱·新工具持续上线中,欢迎收藏关注。如有建议欢迎反馈! 反馈途径·目前大家有任务反馈可以直接发我邮箱:lyfs814@163.com陆续上线高价值工具,敬请期待! 欢迎使用蜗牛工具箱·新工具持续上线中,欢迎收藏关注。如有建议欢迎反馈!
v1.1 · 已上线中英双语纯客户端实时高亮

正则表达式测试Regex Tester

实时高亮所有匹配项,捕获组单独展示并支持替换预览,附邮箱 / URL / IPv4 / 手机号 / 身份证等常用预设。

本周使用—·收藏51·版本v1.1.2·最后更新5 天前·完全免费
//← 标志
测试文本UTF-8
匹配结果2 个匹配 · 3 个捕获组
测试邮件组: alice@example.com bob@gmail.com 中文 240 字符支持:蜗牛工具箱@snail.tools 非法邮箱:not-an-email、missing@tld
捕获组
#$1$2$3
1aliceexamplecom
2bobgmailcom
替换预览
替换结果2 处替换 · 100 字符
测试邮件组: [alice at example] [bob at gmail] 中文 240 字符支持:蜗牛工具箱@snail.tools 非法邮箱:not-an-email、missing@tld

工具介绍

3 段详细说明

正则表达式测试是开发者最高频的辅助工具之一。本工具实时高亮匹配结果,捕获组单独展示,支持替换预览与常用预设(邮箱、URL、IPv4、手机号、身份证、日期等)。

基于浏览器原生 RegExp,完整支持 ES2018+ 语法(含命名捕获组 lookbehind / s 标志 / dotAll)。1 MB 文本匹配 < 100ms。

所有匹配在浏览器本地完成,输入不上传任何服务器。打开网页即用,适合临时调试、日志抽取、数据清洗、爬虫解析等场景。

基础知识 · 正则表达式

ECMAScript · 7 大要素

正则表达式(Regular Expression)是描述字符串模式的微型语言。JavaScript 内置 RegExp 引擎,遵循 ECMAScript 规范。下面用 7 张卡片拆解最核心的 7 大要素:

1字符类Character Classes
预定义类:\d 数字、\w 字母数字下划线、\s 空白字符、. 除换行外任意字符。自定义类 [abc] 匹配 a/b/c;[^abc] 排除。
2量词Quantifiers
* 0+ 次、+ 1+ 次、? 0 或 1 次、{n} 恰好 n 次、{n,} n+ 次、{n,m} n 到 m 次。
3锚点Anchors
^ 行首、$ 行尾、\b 单词边界、\B 非单词边界。JS 中不加 m 修饰符时,^/$ 匹配整个输入的首尾。
4分组Groups
(…) 捕获组(可反向引用 \1 \2);(?:…) 非捕获组(只分组、不捕获);(?<name>…) 命名捕获组(ES2018+)。
5贪婪 vs 非贪婪Greedy / Lazy
默认贪婪(尽可能长匹配)。在量词后加 ? 变为非贪婪:.* vs .*?(最短匹配)。
6修饰符Flags
g 全局匹配(多次)、i 忽略大小写、m 多行模式(^/$ 匹配每行)、s 单行模式(. 匹配换行)、u Unicode 模式。
7转义Escaping
正则元字符 . * + ? ^ $ { } [ ] ( ) | \ / 需要 \ 转义匹配字面字符。\d 等预定义类可视为已转义。
常用模式速查
^\d+$ —— 纯数字字符串。
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z]{2,}$ —— 邮箱近似匹配。
(https?:\/\/[^\s]+) —— URL 提取。
\b\d{3}-\d{4}\b —— 如 1234-5678 这类本地号码段。
正则看起来简单,写得准确更难。复杂场景建议拆分多个小正则逐步验证。

使用说明

4 步快速入门
1
写模式
顶部输入框写表达式,右边选标志(g/i/m/s/u/y)
2
用预设
预设栏一键填充常用正则(邮箱 / URL / 手机号…)
3
贴文本
左侧粘贴待测试文本,右侧实时高亮匹配
4
看捕获
下方表格列出每个匹配的 $1 $2 … 组,可指定替换模板预览结果

正则语法速查

7 类 · 30+ 写法
字符类
\d数字
\D非数字
\w字母数字下划线
\W非字母
\s空白
[abc]字符集
[^abc]反字符集
[a-z]字符范围
量词
*0 次或多次
+1 次或多次
?0 次或 1 次
{n}恰好 n 次
{n,}至少 n 次
{n,m}n 到 m 次
*?懒惰量词
锚定
^行首
$行尾
\b单词边界
\B非单词边界
分组与捕获
(abc)捕获组
(?:abc)非捕获组
(?<n>…)命名捕获
|或
\1 \2反向引用
$&整块匹配
断言
(?=…)正向先行
(?!…)负向先行
(?<=…)正向后行
(?<!…)负向后行
转义
\.匹配字面 .
\\匹配字面 \
\n换行符
\t制表符
\x41十六进制
\u4e2dUnicode
修饰符(flags)
g全局匹配(必加,否则只匹配首个)
i忽略大小写
m多行模式(^ $ 匹配每行)
sdotAll(. 匹配换行)
uUnicode 模式(emoji / 中文安全)
y粘性模式(从 lastIndex 起)

使用场景

5 个真实案例
01校验表单输入

实时测试邮箱、密码强度、手机号等校验正则,写完即复制到代码。

02日志抽取字段

从 access 日志批量抽取 IP / 时间 / 状态码,导出为 CSV。

03爬虫解析 HTML

提取网页里的链接、价格、电话等结构化字段。

04数据清洗

批量替换多余空白、统一日期格式、清理非法字符。

05编辑器替换预览

VSCode / Cursor 执行替换前先测试模板和捕获组引用,避免误伤。

常见问题

5 个问答
支持哪些正则方言?

浏览器原生 ES2018+ 语法:支持命名捕获组((?<name>...))、lookbehind((?<=)...)、dotAll(s 标志)。不支持平衡回溯(递归),与 PCRE 略有差别。

如何测试多次匹配?

勾选 g 标志(默认开启)。右侧匹配列表会显示所有命中位置和捕获组。

匹配中文 / emoji?

支持。JS 字符串以 UTF-16 编码,中文 BMP 字占 1 个 code unit,emoji 占 2 个。建议使用 u 标志处理 surrogate pair。

为什么替换不更新?

替换预览依赖 g 标志,非全局模式只会替换首个匹配。也可使用 $& $1 引用整块匹配与捕获组。

正则回溯导致卡死?

避免 (.+)+ 灾难性回溯。复杂模式建议分步执行。M2 计划加入「最大步数」上限,超时自动中断。

相关工具

开发者分类

数据来源

隐私优先
算法:浏览器原生 RegExp(ES2018+),无第三方依赖。常用预设覆盖 8 类高频场景。
隐私声明:所有匹配在浏览器内存完成,输入不上传任何服务器。