VS Code 搜索框需手动启用正则模式(点击 .* 图标或按 Alt+R/Cmd+R),启用后右下角显示“Regex”标签;search.exclude 用 glob 过滤文件路径,不影响正则匹配逻辑;正则引擎为 ECMAScript 2018,不支持 \K、无长度限制的 lookbehind 等特性。

VS Code 的搜索框支持正则表达式,但默认不启用——必须手动点开 .* 按钮或按 Alt+R(Windows/Linux)/Cmd+R(macOS)才能激活。
如何正确开启并验证正则模式
点击搜索输入框右侧的 .* 图标(它会高亮变蓝),或用快捷键切换。此时输入的模式会被当作正则解析;若图标未激活,\d+ 会被当成字面量搜索,不会匹配数字。
- 误操作常见现象:搜
\bfunction\b没结果 → 实际是没开正则,VS Code 在搜字符串 "\bfunction\b" - 快捷键比点图标更快,尤其批量替换时;macOS 用户注意是
Cmd+R,不是Cmd+F的衍生 - 正则启用后,搜索框右下角会显示
Regex标签,这是唯一可靠的状态提示
search.exclude 和 files.exclude 对正则搜索的影响
VS Code 的文件排除规则(如 **/node_modules)只作用于「文件层级」,不影响正则在已打开文件中的匹配行为;但它们决定哪些文件会被纳入搜索范围——也就是说,正则再强,也搜不到被 search.exclude 过滤掉的路径下的内容。
-
search.exclude是全局设置,影响所有工作区;files.exclude只影响资源管理器显示,对搜索无影响 - 如果想排除某些文件类型但保留部分匹配,比如跳过
.min.js却保留.js,得写成"**/*.min.js": true,不能只写"*.min.js"(glob 不支持无路径前缀的通配) - 正则本身不能用于
search.exclude,它只接受 glob 模式;想用正则过滤路径?做不到,得靠插件或预处理
常用但易错的正则写法和替代方案
VS Code 使用 JavaScript 正则引擎(ECMAScript 2018),不支持 \K、lookbehind 长度不限等高级特性,且默认不开启多行匹配(m 标志需手动加)。
- 想跨行匹配?
.默认不匹配换行符,得用[\s\S]或开启m标志(点击搜索框右侧的…→ 勾选Match case旁的Match whole word下方的Use regular expression后,再点...才能看见multiline开关) - 捕获组替换要用
$1、$2,不是\1;$&表示整个匹配,$`和$'分别是匹配前/后文本(注意是反引号和单引号) - 中文字符匹配写
[\u4e00-\u9fa5]更稳,\p{Script=Han}在 VS Code 中不支持(JS 引擎版本限制)
真正卡住人的往往不是语法,而是忘记正则开关、混淆 glob 与正则的作用域、或在跨行/Unicode 场景下用了不被支持的特性——这些地方没有报错提示,只有“搜不到”的静默失败。










