正则表达式测试Regex Tester
实时高亮所有匹配项,捕获组单独展示并支持替换预览,附邮箱 / URL / IPv4 / 手机号 / 身份证等常用预设。
| # | $1 | $2 | $3 |
|---|---|---|---|
| 1 | alice | example | com |
| 2 | bob | gmail | com |
工具介绍
3 段详细说明正则表达式测试是开发者最高频的辅助工具之一。本工具实时高亮匹配结果,捕获组单独展示,支持替换预览与常用预设(邮箱、URL、IPv4、手机号、身份证、日期等)。
基于浏览器原生 RegExp,完整支持 ES2018+ 语法(含命名捕获组 lookbehind / s 标志 / dotAll)。1 MB 文本匹配 < 100ms。
所有匹配在浏览器本地完成,输入不上传任何服务器。打开网页即用,适合临时调试、日志抽取、数据清洗、爬虫解析等场景。
基础知识 · 正则表达式
ECMAScript · 7 大要素正则表达式(Regular Expression)是描述字符串模式的微型语言。JavaScript 内置 RegExp 引擎,遵循 ECMAScript 规范。下面用 7 张卡片拆解最核心的 7 大要素:
字符类Character Classes\d 数字、\w 字母数字下划线、\s 空白字符、. 除换行外任意字符。自定义类 [abc] 匹配 a/b/c;[^abc] 排除。量词Quantifiers* 0+ 次、+ 1+ 次、? 0 或 1 次、{n} 恰好 n 次、{n,} n+ 次、{n,m} n 到 m 次。锚点Anchors^ 行首、$ 行尾、\b 单词边界、\B 非单词边界。JS 中不加 m 修饰符时,^/$ 匹配整个输入的首尾。分组Groups(…) 捕获组(可反向引用 \1 \2);(?:…) 非捕获组(只分组、不捕获);(?<name>…) 命名捕获组(ES2018+)。贪婪 vs 非贪婪Greedy / Lazy? 变为非贪婪:.* vs .*?(最短匹配)。修饰符Flagsg 全局匹配(多次)、i 忽略大小写、m 多行模式(^/$ 匹配每行)、s 单行模式(. 匹配换行)、u Unicode 模式。转义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 步快速入门正则语法速查
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 | 十六进制 |
| \u4e2d | Unicode |
| g | 全局匹配(必加,否则只匹配首个) |
| i | 忽略大小写 |
| m | 多行模式(^ $ 匹配每行) |
| s | dotAll(. 匹配换行) |
| u | Unicode 模式(emoji / 中文安全) |
| y | 粘性模式(从 lastIndex 起) |
使用场景
5 个真实案例实时测试邮箱、密码强度、手机号等校验正则,写完即复制到代码。
从 access 日志批量抽取 IP / 时间 / 状态码,导出为 CSV。
提取网页里的链接、价格、电话等结构化字段。
批量替换多余空白、统一日期格式、清理非法字符。
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 类高频场景。