正则测试器
正则测试器,是指在线输入一条正则表达式和一段测试文本,实时把所有匹配片段高亮标出、并展开每个编号捕获组和命名分组,帮你快速调试、验证正则写得对不对。本工具免费、不加水印,基于浏览器原生的 JavaScript(ECMAScript) 引擎运行,正则与测试文本不上传服务器,适合调试含账号、日志等敏感数据的内容。支持 g/i/m/s/u/y 标志与替换预览,并内置手机号、邮箱、身份证等常用正则库;它用的是 JS 语法,与 PCRE/Python 略有差异。
//g
常用正则库(点击一键套用手机号 / 邮箱 / 身份证等)
输入正则表达式后自动匹配。
🔒 正则与测试文本都在你的浏览器本地用原生 JS 引擎求值,未上传任何服务器。它测试的是 JavaScript(ECMAScript) 语法,与 PCRE / Python 略有差异;病态正则会被超时中止以保护浏览器。
如何使用正则测试器
1
在上方输入正则表达式并勾选需要的标志(g 全局、i 忽略大小写、m 多行、s 单行、u Unicode、y 粘连);内容不上传,浏览器本地求值。
2
在下方粘贴或上传要测试的文本,页面即时高亮所有匹配,并列出每条匹配的起止位置、编号捕获组与命名分组。
3
需要时点「替换预览」填替换字符串查看替换后全文,或从常用正则库一键套用手机号、邮箱、身份证等现成规则。
常见问题
- 正则测试器会上传我的正则和文本吗?安全吗?
- 不会上传。正则测试器全程在你的浏览器本地用原生 JavaScript 引擎求值,正则和测试文本都不会发送到任何服务器,关闭页面即清除,因此测试含账号、日志、身份证号等敏感数据的文本也放心。
- 手机上能用正则测试器吗?需要装软件吗?
- 可以,且无需下载任何 App 或软件。正则测试器是纯网页实现,手机、平板、电脑浏览器打开即用,无需注册登录,随时随地在线调试正则表达式。
- 正则测试器支持哪些标志(g/i/m/s/u/y)?
- 支持 g(全局匹配全部结果)、i(忽略大小写)、m(多行,让 ^ $ 匹配每行首尾)、s(单行 dotAll,让 . 匹配换行)、u(Unicode,正确处理 emoji 与码点)、y(粘连 sticky)。勾选即时生效;为精确定位捕获组位置,内部会自动附加 d(hasIndices),不影响匹配结果。
- 正则测试器能测捕获组和命名分组吗?
- 能。每条匹配都会展开全部编号捕获组($1…$n,未命中显示 undefined)和命名捕获组 (?<name>…),并给出匹配的起止索引,方便你验证分组是否按预期捕获。
- 正则测试器是哪种语法(flavor)?和 PCRE、Python 正则一样吗?
- 本正则测试器用的是 JavaScript(ECMAScript) 语法,和 PCRE、Python re、Java、Go(RE2) 并不完全等价。它支持命名组 (?<name>)、lookbehind (?<=)、u/d 标志;但不支持内联修饰符 (?i)、原子组 (?>)、占有量词 a++、递归等 PCRE 特性,请以你实际运行环境(前端 JS / Node)为准。
- 正则测试器为什么会卡住或提示被中止(ReDoS)?
- 某些写法(如嵌套量词 (a+)+ 配长文本)会触发灾难性回溯,正则引擎在特定输入上会指数级耗时。为保护浏览器,正则测试器把求值放在独立线程并设了硬超时,超时即中止并提示——这不是工具缺陷,请改写正则避免嵌套量词或缩小测试文本。
- 常用正则表达式(手机号/邮箱/身份证)在哪里直接套用?
- 在本页的「常用正则库」区域直接点选即可。正则测试器内置常用正则库,涵盖手机号、邮箱、身份证 18 位、URL、IPv4、日期时间、中文字符、车牌号、十六进制颜色等,点一下即可把正则、标志和示例文本一键填入并立即看到高亮效果。
正则表达式语法速查表
| 写法 | 含义 | 示例 |
|---|---|---|
| . | 除换行外任意字符(加 s 标志可含换行) | a.c 匹配 abc、a1c |
| \d \w \s | 数字 / 单词字符(字母数字下划线) / 空白 | \d+ 匹配一串数字 |
| \D \W \S | 上面三者的取反 | \S 匹配非空白字符 |
| [abc] [^abc] | 字符集合 / 排除集合 | [a-z] 匹配任意小写字母 |
| * + ? | 重复 0+ / 1+ / 0 或 1 次 | ab* 匹配 a、ab、abbb |
| {n} {n,} {n,m} | 精确 n 次 / 至少 n 次 / n 到 m 次 | \d{4} 匹配 4 位数字 |
| *? +? {n,m}? | 惰性(非贪婪)量词,尽量少匹配 | <.+?> 匹配最短标签 |
| ^ $ | 行首 / 行尾(加 m 标志按每行) | ^\d 匹配以数字开头 |
| \b \B | 单词边界 / 非单词边界 | \bcat\b 只匹配独立 cat |
| ( ) (?: ) | 捕获组 / 非捕获组 | (ab)+ 捕获,(?:ab)+ 不捕获 |
| (?<name>…) | 命名捕获组 | (?<y>\d{4}) 捕获为 y |
| (?= ) (?! ) | 先行断言 / 否定先行 | a(?=b) a 后须跟 b |
| (?<= ) (?<! ) | 后行断言 / 否定后行 | (?<=¥)\d+ 金额数字 |
| a|b | 或(择一匹配) | cat|dog 匹配 cat 或 dog |
| \ 转义 | 匹配元字符本身 | \. 匹配真正的句点 |