批量查找替换
支持普通文本与正则,可选忽略大小写,逐处替换
批量查找替换:普通模式与正则模式的区别
两种模式的本质差别
| 普通模式 | 正则模式 | |
|---|---|---|
| 查找内容 | 字面子串 | 模式(模式字符有特殊含义) |
| 特殊字符 | 都是普通字符,无需转义 | . * + ? ( ) [ ] { } | ^ $ \\ 需要转义 |
| 替换内容 | 原样写入 | $1、$& 等引用捕获组 |
| 典型用途 | 改一个名称、换分隔符、删某个词 | 重组格式、按模式规范化、提取并重排 |
用普通模式做"替换某个词"是最安全的选择——不需要考虑任何转义。切到正则模式后,一个 . 就会变成"任意字符",一个 ( 会变成分组开始,未配对的括号会直接报错。
正则模式下的替换引用
这是正则替换真正有用的地方——不只是替换,而是重组:
| 替换写法 | 含义 |
|---|---|
$1 $2 | 第 1、2 个捕获组的内容 |
$& | 整个匹配到的文本 |
$ 加反引号 | 匹配之前的文本(该字符无法在本文档里直接写出,见 MDN 的 String.replace 文档) |
$' | 匹配之后的文本 |
$$ | 一个字面的美元符号 |
实用例子——把 2026-01-15 改成 15/01/2026:查找 (\d{4})-(\d{2})-(\d{2}),替换为 $3/$2/$1。用普通模式做不到这件事,因为它是"重排"而不是"替换"。
再看一个:给行首加缩进。查找 ^(\S),替换 $1(配合多行开关)。
三个容易出错的地方
$在普通模式里也是字面量,但在正则替换里是引用前缀。想替换成字面的美元符号,普通模式下直接写$;正则模式下要写$$。- 反向引用数字的歧义。
$12会被理解为第 12 个捕获组(如果存在)而不是"第 1 组后跟字符 2"。需要后者时应该写成$1加2,即$1 2去掉空格,或用命名组。 - 忽略大小写开关只作用于查找,不作用于替换。替换文本会原样写入,大小写由你自己决定。想把
color和Color都换成colour,勾选忽略大小写即可;但想把它们分别保持原大小写地处理,就需要两组替换或用$&的相关技巧。
检查一下再动手
批量替换是不可逆的(除非你保留了原文)。建议流程:
- 先用正则测试工具确认模式匹配到的是你想要的东西,看匹配数量和每个匹配的内容。
- 特别注意意外匹配。想替换
id时会命中userId、valid、hidden——用词边界\bid\b可以避免。 - 替换后通读一遍结果,别只看"替换完成"。
- 原文另存一份。工具的输出是只读的,替换前的原文还在输入框里,但如果你继续在输入框里编辑就会覆盖它。
替换在浏览器本地完成,含敏感信息的文本不会被上传。
常见问题
正则模式下替换框能用 $1 吗?
可以。替换内容支持 $1 $2 等反向引用,引用正则中的捕获组。
忽略大小写怎么和正则一起用?
勾选"正则"且勾选"忽略大小写"时,会自动加上 i 标志,匹配时不区分大小写。