无需登录 数据私有 本地保存

正则替换捕获组测试器 - $1/$2 引用预览

65
0
0
0
什么是捕获组?
捕获组是正则表达式中用括号 () 包裹的子表达式。匹配时,括号内的内容会被"捕获"并编号(按左括号出现顺序),之后可在替换中用 $1、$2 等引用。非捕获组 (?:...) 不会产生编号。例如正则 (\w+)@(\w+) 中,第一个捕获组匹配 @ 前的用户名,第二个捕获组匹配 @ 后的域名。
$1 和 $01 有区别吗?
在 JavaScript 中,$1 引用第1个捕获组,$01 同样引用第1个捕获组(前导零被忽略)。但 $10 会尝试引用第10个捕获组,如果不存在则为空字符串。建议使用 $1-$9 的简洁写法以避免混淆。本工具在解析替换模板时遵循 JavaScript 的标准行为。
如何替换所有匹配?
确保开启 g 标志(全局匹配)。开启后 String.replace() 会替换所有匹配项。关闭 g 标志则只替换第一个匹配。本工具默认已开启 g 标志,您可以在标志区域查看和切换 g 标志的状态。对于多行文本的批量替换,请同时考虑是否需要开启 m 标志。
$&、$` 和 $' 分别代表什么?
$& 代表整个匹配的文本;$`(反引号前)代表匹配位置之前的全部文本;$'(单引号后)代表匹配位置之后的全部文本。这些在构造环绕替换时非常有用。例如将匹配的数字用方括号包围,模板可以写为 [$&];将关键词加粗标记,可以组合使用这些引用。
为什么我的 $1 显示为空?
常见原因包括:正则中没有使用括号定义捕获组;括号被错误转义(如 \( 匹配字面量括号而非分组);使用了非捕获组 (?:...);捕获组编号超出了实际数量。请检查正则表达式中的括号数量和类型。本工具的捕获组详情表格可以帮助您确认实际捕获组的数量和内容。
支持命名捕获组吗?
支持。JavaScript ES2018+ 支持命名捕获组 (?<name>...),在替换中使用 $<name> 引用。本工具同时支持编号捕获组和命名捕获组。命名组也会被分配编号,因此也可以用 $1、$2 等方式引用。建议在捕获组较多时使用命名捕获组以提高可读性。
本工具的数据会上传到服务器吗?
不会。所有正则表达式解析、文本匹配和替换计算均在您的浏览器本地完成,不依赖任何后端服务。您的正则表达式、替换模板和测试文本不会被发送到任何远程服务器。您可以放心使用本工具处理包含敏感信息的文本内容。
为什么匹配高亮没有显示?
匹配高亮未显示通常意味着正则表达式没有匹配到测试文本中的任何内容。请检查:正则表达式语法是否正确;正则标志是否合适(如是否需要开启 i 标志忽略大小写);测试文本中是否确实包含可匹配的内容。工具状态区域会显示"匹配: 0",提示当前没有匹配项。
如何使用 $$ 插入字面量美元符号?
在替换模板中,$ 符号具有特殊含义(用于引用捕获组等)。如果您需要在替换结果中插入字面量的 $ 符号,需要使用 $$ 进行转义。例如模板 $$100 会在替换结果中输出 $100,而不是引用第100个捕获组。本工具的模板引用解析预览可以帮助您确认 $$ 是否被正确解析。