VSCode正则替换必须点亮.图标并用$1引用捕获组,否则\d+当字面字符串、$1原样输出;确认开启需见右下角Regex标签和蓝色.图标;跨行须用[\s\S];全局替换前必验证范围、上下文及排除设置。

VSCode 正则替换不是“开了就能用”,而是必须先点亮 .* 图标、再写对捕获组引用格式,否则 \d+ 当字面字符串,$1 当纯文本输出——90% 的失败都卡在这两步。
怎么确认正则模式真开启了
别信记忆,每次操作前看右下角:.* 图标必须是蓝色,且搜索框右下角显示 Regex 标签。没亮就是关着的,此时输 ^、\n、\d 全部按普通字符处理。Alt+R(Windows/Linux)或 Option+R(Mac)是最快切换方式,但焦点得在搜索框里;点图标也行,但注意它旁边不能有灰色禁用态。这个开关是会话级的:关掉 VSCode 再开,又得重点。
替换时捕获组只能写 $1,不能写 \1 或 ${1}
VSCode 替换字段只认 JavaScript 风格语法:$1、$2、$0(整个匹配)、$&(同 $0)。写成 \1 就是字面输出反斜杠加 1;${1} 会被当普通字符串原样插入,不会解析。常见误写:let ${1} = → 实际结果是 let ${1} =,正确应为 let $1 =。多个括号按左括号出现顺序编号,(?:) 非捕获组不占位。
跨行匹配必须用 [\s\S],. 永远不匹配换行符
VSCode 不支持 /s(dotAll)标志,所以 .* 在多行文本里会在第一行末尾断掉。安全写法是显式用 [\s\S](空白或非空白)或 [^](任意字符)。例如:
匹配多行注释:/\*[\s\S]*?\*/;
提取 JSX 标签内容:;
抓 JSON 对象:{[\s\S]*?}。
别用无锚点的 [\s\S]*error,大文件容易卡死或触发 Too many results。
全局替换前必须验证三件事
VSCode 的 Replace All 是直接写内存,没有预览面板,撤销只在所有被改文件仍打开时有效。执行前务必:
• 点 Find in Files(或按 Enter),看左侧结果树是否只有你预期的匹配项;
• 逐个展开匹配项左侧的 ▶,检查上下文(比如别把字符串里的 // 当注释干掉了);
• 检查 files to include 和 files to exclude:默认排除 node_modules,若要搜它,得手动清空或填 !node_modules/**。
真正难的不是写对一个正则,而是嵌套结构里分组编号偏移、贪婪匹配吃掉不该吃的块、或跨文件上下文不一致——这些没法靠语法文档解决,得靠预览和小步试错。











