VSCode正则搜索需手动启用.图标并确认右下角Regex标签显示,跨行匹配应使用[\s\S]?而非.,替换仅支持$1语法,批量替换前须验证范围以防误改。

正则模式没开,写啥都白搭
VSCode 的 .* 图标不点亮,\d+、^、$ 全当普通字符处理——你搜 console\.log 却没结果,大概率是它还是灰色的。必须手动点搜索框右侧的 .* 图标(变蓝才算生效),或按 Alt+R(Win/Linux)/Cmd+Option+R(macOS)。右下角出现 Regex 标签才是真启用;关掉面板再打开,开关默认重置,不是记忆上次状态。
跨行匹配总失败?别信 UI 开关,用 [\s\S] 更稳
VSCode 默认 . 不匹配换行符,所以 function\s+\w+\s*\([^)]*\)\s*\{.*\} 在多行函数里必然断在第一行末尾。UI 上那个 ↵ 图标只在 Ctrl+Shift+F 全局搜索中有效,在 Ctrl+F 当前文件里根本不起作用。更可靠的做法是显式写 [\s\S]*?:
-
/\*[\s\S]*?\*/安全匹配多行注释 -
className="[\s\S]*?"匹配 JSX 中可能换行的属性值 - 避免无锚点的
[\s\S]*error开头,大文件会卡死或触发Too many results
替换时捕获组只能写 $1,不是 \1 或 ${1}
VSCode 使用 JavaScript 风格替换语法, 是唯一合法写法: 会被原样输出文字 , 直接报错或为空。括号必须是捕获型((...)),非捕获组 (?:...) 不产生编号;想输出字面量 $price,得写成 $$price。
- 查找:
import\s+\{([^}]+)\}\s+from\s+['"](.+)['"] - 替换:
import $1 from '$2/$1';(写成\1或${1}都无效) -
$&表示整个匹配内容,$0同义,但$10表示第 10 个捕获组,不是$1后跟0
批量替换前不验证范围,改错没法一键撤回
Replace All 没有 diff 预览、不二次确认、不校验上下文——点下去就改,改错只能靠 Ctrl+Z(当前文件)或 git checkout(已关闭文件)。必须手动做三件事:
- 先按
Enter或点Find in Files,看左侧结果树是否只命中目标文件 - 逐个点开匹配项左侧的 ▶,展开上下文,确认前后几行逻辑一致(比如别把字符串里的
console.log也干掉了) - 检查
files to include和files to exclude:默认排除node_modules,若要搜它,得手动清空该字段或改成!node_modules/**
真正难的从来不是正则语法本身,而是嵌套结构和上下文边界——比如匹配 JS 中带换行的模板字符串,或 CSS 里被注释包裹的旧类名。


















