regex previewer 插件需手动触发(ctrl+shift+p → “regex previewer: show”),仅支持无分隔符正则模式、正确语言模式(如javascript)及侧边flags勾选标志位,不响应纯文本中斜杠包裹的正则或自动监听。

Regex Previewer 插件不会自动弹出,也不能直接在纯文本里写 /\d+/g 就生效——它只响应「无分隔符的正则模式 + 正确语言模式 + 手动唤出」这三要素。
怎么正确唤出 Regex Previewer 面板
插件安装完不会自动加载,也不会监听你随手敲的正则字符串。必须主动触发:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)打开命令面板 - 输入
Regex Previewer: Show并回车 - 右侧会立即出现三栏面板:左输模式、右贴文本、中看高亮和捕获组
- 别指望在
.txt文件里按Ctrl+F后点 .* 就能唤出它——那是 VSCode 自带查找,和这个插件完全无关
为什么正则粘进去没反应或显示 Invalid regex
Previewer 不报语法错误,只静默失败。常见原因不是写错了,而是格式或上下文不对:
- 正则写了
/分隔符,比如/(\d{4})-(\d{2})-(\d{2})/g—— 它会把开头的/当成字面量字符,直接匹配失败;应只写(\d{4})-(\d{2})-(\d{2}),标志位g、i、m单独勾选在侧边 Flags 框里 - 括号不配对、字符类里
[没转义(如想匹配字面[a-z],得写成\[a-z\]) - 用了 JS 引擎不支持的特性,比如变长 lookbehind
(?(VSCode 1.85+ 才稳定) - 文件语言模式是
plaintext但插件未启用该模式支持(部分版本对plaintext不稳定),建议临时切为javascript:Ctrl+K M→ 选 JavaScript
匹配高亮有了,但捕获组不显示或为空
捕获组不显示 ≠ 正则写错,大概率是引擎没编译通过,或标志位/分隔符干扰:
- 先在浏览器控制台或 VSCode 终端里跑一句
console.log(/(a)(b)/.test('ab')),确认能通过 JS 引擎解析;如果报错,Previewer 一定不显示分组 - 确保没漏掉
g标志——有g时exec()是迭代调用,Previewer 只显示第一次匹配的分组;没g才能一次性看到所有捕获 - 命名捕获组
(?<year>\d{4})</year>在旧版 VSCode 中可能被忽略,优先用数字编号$1测试 - 中文、emoji 匹配不到?加
u标志(如[\u4e00-\u9fa5]+/u),并确认文件编码是 UTF-8
和 Ctrl+F 查找的区别到底在哪
两者底层引擎不同,行为边界也完全不同:
-
Ctrl+F用的是 ripgrep,不支持(?i)这类内联标志,大小写忽略得点Aa按钮;而 Previewer 是 JS 引擎,支持gi修饰符,但不支持 ripgrep 的-U(超长行)等特性 -
Ctrl+F默认不跨行,哪怕写[\s\S]*也没用;必须点↵按钮(启用s标志)才让.匹配换行符;Previewer 同理,不勾m(多行)标志,^和$就只锚定单行首尾 -
Ctrl+F替换时支持$1,Previewer 的 Replace 标签也支持,但只是模拟——它不改文件,也不执行逻辑,仅预览结果;真要替换,还得回到Ctrl+H - Previewer 不保存历史,关掉面板就清空所有输入;复杂正则建议直接写进代码注释,例如:
// regex: /^#(\d+): ([^;]+);$/,下次打开还能复制过来试











