实时匹配高亮 + 分组捕获 + 替换预览 + 常用模板。

切换工具
//g
测试文本
0 字符 · 0 行
匹配高亮预览
匹配结果
输入正则和测试文本后自动显示匹配结果

使用说明

用途

正则表达式在线测试工具,支持 JavaScript / PCRE / Python / Java / Go 多种正则方言,实时高亮匹配位置、捕获组、命名分组。提供 g/i/m/s/u/y 标志位组合(全局 / 忽略大小写 / 多行 / dotAll / Unicode / sticky),可视化展示捕获组结构,常用正则速查(中文 / Email / 手机号 / URL / IP / 身份证 / 日期等)。同时支持 replace 测试和分割 split 测试。所有匹配在浏览器本地完成。

操作步骤

  1. 输入正则表达式(不含两侧斜杠 //)+ 选标志位
  2. 在测试文本框输入待匹配字符串
  3. 工具实时高亮所有匹配位置,并列出每次匹配的捕获组
  4. 切换方言:JavaScript(默认)/ PCRE / Python re / Java / Go
  5. replace 模式:输入替换模板($1 $2 引用捕获组),看替换结果
  6. split 模式:用正则切分字符串得到数组
  7. 常用正则库一键插入:中文匹配 / Email / 手机号 / URL / IP / 身份证 / 日期 / IPv4 / IPv6
  8. 生成代码片段:把正则封装为 JS / Python / Java / Go 测试代码

常见问题

为什么我的正则在 JS 里能匹配,在 Python 里不行?
不同语言正则引擎方言不同。**常见差异**: 1) JS 不支持向后引用(?<=),Python 支持;2) JS 不支持原子组 (?>);3) Python 的 \d 默认只匹配 [0-9],JS 的 \d 在 Unicode 模式下也只匹配 ASCII,但部分语言 \d 包括 Unicode 数字;4) JS 单行 . 不匹配换行,Python 单行 . 也不匹配(要用 re.DOTALL)。本工具支持方言切换对照测试。
贪婪 (.*) 和非贪婪 (.*?) 区别?
**贪婪**: 尽可能多匹配,然后回溯。`<.*>` 匹配 `<a><b>` 整体(从第一个 < 到最后一个 >)。**非贪婪**: 尽可能少匹配。`<.*?>` 匹配 `<a>` 单独一段。**实际用法**: 提取 HTML 标签 / 引号字符串内容时用非贪婪;匹配整段文本时用贪婪。
命名捕获组 (?<name>...) 怎么用?
**JS(ES2018+)**: `(?<year>\d{4})-(?<month>\d{2})`,引用 m.groups.year。**Python**: `(?P<year>\d{4})` 同样语法。**好处**: 代码可读性高、维护变更不踩位置。**注意**: PHP / 老 JS 引擎可能不支持,要降级用编号捕获组 $1 $2。
匹配中文怎么写?
**简单**: `[\u4e00-\u9fa5]` 匹配 BMP 区 CJK 汉字(最常用范围)。**完整**: `\p{Script=Han}` 匹配所有汉字(含扩展区,要 Unicode 标志 /u)。**纯中文段落**: `^[\u4e00-\u9fa5]+$`。**包含中文**: `[\u4e00-\u9fa5]+`。
为什么正则测试有时极慢甚至卡死?
**灾难回溯(catastrophic backtracking)**。问题正则形如 `(a+)+` 或 `(.*)+`,对长输入有指数级回溯。本工具有"超时保护"(500ms 强制停止)并提示哪段引起。**改写方案**: 用原子组 (?>...) 或所有格量词 a++(如果方言支持),或重构正则消除嵌套量词。

应用场景

  • 数据校验:表单输入验证(手机号 / Email / 身份证 / IP 格式)
  • 日志解析:从日志行提取时间戳、状态码、URL、错误信息
  • 批量替换:代码 / 文档批量重命名、修改字符串模板
  • URL 路由:Web 框架的路由匹配(/user/:id 转正则)
  • 爬虫提取:HTML 文本中匹配特定模式的内容

适用场景

表单数据校验、日志解析提取、代码批量替换、URL 路由匹配、爬虫数据提取。开发者高频工具。多方言对照、命名捕获组、replace/split 测试、常用正则库是关键差异点。**警惕灾难回溯**。