正则表达式测试器实时 JavaScript RegExp 调试器
zh-CN

AppHelp

测试并调试 JavaScript 正则表达式

输入时即时查看匹配,高亮索引与捕获组,验证正反例,预览替换结果,并复制安全转义的 JavaScript 代码。

JavaScript 正则工作区

基于浏览器 JavaScript RegExp 引擎,提供实时高亮、测试、替换和代码生成。

本地运行
标志

实时匹配预览

/(?<user>[A-Z0-9._%+-]+)@(?<domain>[A-Z0-9.-]+\.[A-Z]{2,})/gi

2 个匹配有效
Contact ada@example.com or support@apphelp.net. Invalid: person@example.
匹配 1[8, 23) · 15 个字符
ada@example.com
$1ada
$2example.com
userada
domainexample.com
匹配 2[27, 46) · 19 个字符
support@apphelp.net
$1support
$2apphelp.net
usersupport
domainapphelp.net
.

除换行外的任意字符

\d / \w / \s

数字、单词与空白字符类

* + ?

零次或多次、一次或多次、可选

{2,5}

重复 2 到 5 次

^ $

开头与结尾锚点

(...) / (?:...)

捕获组与非捕获组

(?<name>...)

命名捕获组

(?=...) / (?!...)

正向与负向前瞻

常见任务

  • 正则表达式测试器
  • 正则在线测试
  • javascript 正则测试
  • regex 调试器
  • 正则匹配高亮
  • 正则替换测试
  • 正则捕获组
  • 正则单元测试
  • regex101 替代
  • 免费正则工具

快速答案

输入 JavaScript 正则模式、选择明确标志并粘贴测试文本。AppHelp 使用浏览器 RegExp 引擎编译模式,高亮每个 JavaScript 匹配,展示索引范围与捕获组,预览替换标记,运行逐行正反例测试,并生成安全转义的构造器代码。PCRE、Python、Java、.NET 与 RE2 等引擎可能有不同结果。

使用步骤

  1. 1. 输入 JavaScript 模式只输入模式本身,不要包含两侧斜杠;单独选择标志可避免重复或意外加入不支持的标志。
  2. 2. 检查高亮匹配粘贴有代表性的文本,查看每个匹配、左闭右开索引范围、编号捕获、命名组与零长度标记。
  3. 3. 验证替换与用例使用 $1 或 $<name> 等 JavaScript 替换标记,并逐行加入应匹配和不应匹配的用例。
  4. 4. 复制实现代码打开 JavaScript 标签复制 RegExp 构造器代码,上线前再检查性能与目标运行时兼容性。

示例

命名邮箱分组

输入
(?<user>[A-Z0-9._%+-]+)@(?<domain>[A-Z0-9.-]+\.[A-Z]{2,}) / gi
输出
匹配类似邮箱的文本,并提供 user 与 domain 分组。

ISO 日期部分

输入
\b(?<year>\d{4})-(?<month>0[1-9]|1[0-2])-(?<day>0[1-9]|[12]\d|3[01])\b / g
输出
从 YYYY-MM-DD 候选中捕获年、月、日。

它只校验数字形状,不判断 2 月 31 日等真实日历有效性。

重复单词

输入
\b(?<word>\w+)\s+\k<word>\b / gi
输出
查找相邻重复词,例如 is is。

常见场景

  • 将校验模式加入表单前进行调试
  • 检查解析器、日志处理与迁移脚本使用的捕获组
  • 修改文本或代码前预览查找替换
  • 把缺陷样例转成正反回归用例
  • 生成安全转义的 JavaScript RegExp 构造器

注意事项

  • 没有全局 g 标志时,JavaScript 只返回第一个匹配,替换通常也只影响第一次出现。
  • 零长度全局匹配必须手动推进游标;工具用箭头标出并防止无限循环。
  • 正则只能校验形状,不能证明业务规则、日历日期、网址可达或邮箱真实存在。
  • 嵌套且含歧义的量词可能在恶意输入上造成灾难性回溯;生产中应基准测试并限制输入。
  • 后行断言、Unicode 属性、标志和替换标记在 JavaScript、PCRE、Python、Java、.NET 与 RE2 中不同。
  • 测试器会限制显示的匹配数和输入长度,以保护浏览器响应速度。

功能特点

  • 实时 JavaScript RegExp 校验与匹配高亮
  • 索引范围、编号捕获、命名组和零长度匹配标记
  • 明确的 g、i、m、s、u、y 与 d 标志控件
  • 按 JavaScript 替换语义即时预览模板
  • 正例与反例测试及通过/失败汇总
  • 邮箱、网址、IPv4、ISO 日期、颜色和重复词预设
  • 可复制的 JavaScript 构造器代码与速查卡
  • 浏览器本地处理并限制匹配数量以保持响应

常见问题

本工具使用哪个正则引擎?
使用当前浏览器内置的 JavaScript RegExp 引擎,因此结果对应浏览器,而不是 PCRE、Python、Java、.NET 或 RE2。
g 和 i 标志有什么作用?
g 会继续查找所有匹配;没有它只返回第一个。i 让字母匹配忽略大小写。
可以查看命名组和编号捕获组吗?
可以。每张匹配卡会显示 $1、$2 等编号捕获,以及 (?<name>...) 定义的命名组。
替换标记如何工作?
预览遵循 JavaScript String.replace 语义,包括编号组的 $1 与命名组的 $<name>。
为什么会显示零长度匹配标记?
某些模式匹配位置而非字符;标记让不可见结果可检查,并安全推进循环。
测试全部通过就能证明正则安全吗?
不能。用例只覆盖输入内容,还需检查误报、漏报、引擎支持与最坏性能。
测试文本会被上传吗?
不会。编译、匹配、替换、测试和代码生成都在浏览器本地完成。