正则与测试文本不会离开你的浏览器。
什么是正则测试工具?
正则(正则表达式)测试工具让你在示例文本上实时构建并验证模式,避免了「改应用代码 → 重新部署 → 看日志确认是否匹配」这种慢得多的试错循环。正则是通用的文本处理语言——几乎每种现代编程环境都有自己的方言:JavaScript 的 RegExp、Python 的 re、Java 的 Pattern、Go 的 regexp、ripgrep、grep、sed、awk、Vim 的搜索、以及绝大多数编辑器的查找/替换。一个正则写偏一点(漏一个转义、忘了 g 标志、贪婪量词应写懒惰),代价就是它放过去的每一个 bug:从坏掉的日志解析器到过度严苛的校验器,到能直接造成数据丢失的全局替换。 DevFormatLab 的正则测试工具每次按键都会用浏览器原生 JavaScript RegExp 引擎对测试文本求值,因此你看到的结果与前端代码运行结果完全一致。每条匹配在测试文本中高亮显示,每个捕获分组(包括命名分组 (?<name>...))逐项列出;标准修饰符 g、i、m、s、u、y 都支持。内置预设库提供最常用的模式(邮箱地址、URL、日本邮编、ISO 8601 日期、IPv4、十六进制颜色),让你从一个真实可用的基线开始迭代,而不是从零起步。兼容性提示会标注 JavaScript、Java、Python 三者的差异——例如变长 lookbehind、Unicode 属性转义(\p{Nd}、\p{Script=Hiragana})、命名分组语法——避免你写一个本地正常但上服务器就崩的正则。所有内容都不上传:正则与测试文本始终在你的浏览器内,处理日志、客户邮箱、敏感 ID 都安全。
功能特性
- 实时高亮,输入即匹配,无需点 Run
- 每条匹配的捕获分组列表,含命名分组 (?<name>...)
- 全部标准修饰符:g(全局)、i(忽略大小写)、m(多行)、s(dotAll)、u(Unicode)、y(粘性)
- 预设:邮箱、URL、日本邮编、ISO 8601 日期、IPv4、十六进制颜色
- JavaScript / Java / Python 兼容性差异提示
- 匹配数统计 + 每条结果的 1 起始索引
- 纯浏览器运行 —— 正则与测试文本不会离开你的设备
使用步骤
- 在正则输入框输入模式(不要带斜杠——输入 users\.\w+,而不是 /users\.\w+/)。
- 按需在 flags 框加修饰符:g 找全部匹配(而非只第一条)、i 忽略大小写、m 让 ^ $ 匹配每一行、s 让 . 跨越换行、u 启用完整 Unicode。
- 在右侧粘贴测试文本——或点击一个预设(邮箱、URL、日本邮编 等),一键加载可用的正则与示例文本。
- 匹配实时在测试文本中高亮;右侧 Matches 面板列出每条匹配的 1 起始索引与全部捕获分组(含命名分组)。
- 如果正则报「Invalid regular expression」,悬停可看到原因(nothing to repeat、unterminated group、invalid escape 等),无需离开页面就能修复。
- 上线前请查看兼容性提示:在 JavaScript 中可用的正则在 Java / Python 上可能有差异——例如变长 lookbehind 或 Unicode 属性转义。
常见问题
为什么我的正则只匹配到了第一处?
▾
你忘了加 g 全局修饰符。没有它,RegExp.exec / String.match 只返回第一条结果。 // 错误——只找到一个 "cat" /cat/.test("cat cat cat") // 正确——遍历所有匹配 "cat cat cat".match(/cat/g) // ["cat","cat","cat"] 在本工具中,把 g 输入到正则旁边的 flags 框。右侧 Matches 面板会列出每条匹配并标注从 1 开始的索引。
为什么报「Invalid regular expression: nothing to repeat」?
▾
量词(* + ? {n})需要前面有可重复的内容。常见原因是元字符没转义就出现在分组开头: /+1234/ ← + 前面没东西可以重复 /(?:)+/ ← 重复一个空分组 /5{1,3+}/ ← 量词内多了一个 + 把字面量转义即可:/\+1234/ 匹配 "+1234"。手机号建议写 /\+?\d{10,15}/。
如何匹配跨行内容?
▾
两个不同的问题需要不同的修饰符: • m(多行):^ 和 $ 匹配每一行的开头/结尾,而不是整段字符串。逐行模式如 /^ERROR/m。 • s(dotAll):让 . 也能匹配 \n。当你希望一个模式跨越换行时使用,例如 /<pre>(.*?)<\/pre>/s。 在本工具中可以自由组合:日志抓取常用 gms。
为什么 \d 匹配不到日文 / 全角数字?
▾
默认 \d 只匹配 ASCII 0-9,不包括 0-9。加上 u(Unicode)修饰符并用 Unicode 属性转义: /[\d\p{Nd}]/gu // 既能匹配 12,也能匹配 12 本工具支持 u;Java 需要 (?U),Python 的 stdlib re 不支持完整 Unicode 类,要用第三方 regex 包——兼容性面板会标出这些差异。
lookbehind 在 Safari / 旧 Node 上失效怎么办?
▾
变长 lookbehind (?<=...) 在 V8 / SpiderMonkey 早已就绪,但 Safari < 16.4 与 Node 8.x 不支持。若必须兼容旧运行时: • 把 lookbehind 换成捕获分组:/(?<=USD )\d+/ → /USD (\d+)/,读 match[1] 即可。 • 或把 new RegExp 包在 try/catch 里,失败时降级为手动扫描。 本工具按你当前浏览器编译,这里失败说明生产也会失败——上线前请改写为捕获分组形式。
我的正则与测试文本会被上传吗?
▾
不会。正则用 new RegExp(...) 编译后完全在浏览器内执行匹配。打开开发者工具的网络面板再点 Run,你不会看到任何新请求;默认也不会把正则写入 localStorage。
相关工具
JSON 的格式化、压缩、校验与美化,错误位置高亮。
并排比对两份 JSON,行级红绿高亮,可按键名排序忽略顺序差异。
去重、删除空行、去除空格,UTF-8 ↔ Shift-JIS 编码转换,自动检测乱码。
YAML、JSON 与 Java .properties 互转,严格校验并精确定位错误。
对文本或文件进行 Base64 / Base64URL 编码与解码,实时、纯浏览器运行。
对 URL、查询字符串和 URI 组件进行编码/解码,支持 %20 与 + 空格模式。
在浏览器内为文本或文件生成 MD5、SHA-1、SHA-256、SHA-384、SHA-512 哈希。
Unix 时间戳(秒 / 毫秒)与人类可读日期互转,支持多时区。
解码 JWT (JSON Web Token),查看 Header / Payload / Signature,时间字段自动转为可读日期与过期状态。
把 JSON 转为适合嵌入代码的字符串字面量(双引号与反斜杠已转义)。
Canonical: https://devformatlab.com/zh/regex-tester