如何在VSCode中为JS的new RegExp实现正则语法高亮?
如何让
new RegExp中的正则表达式像正则字面量一样语法高亮? 
示例代码:
/^this\b(.*?)\bis(:{0,1})/g; new RegExp(/*regex*/ `^this\b(.*?)\bis(:{0,1})`, 'g'); // << 这里能实现语法高亮吗?
更新说明:我之前忽略了一个关键问题——这其实不是个合理需求。字符串里的转义字符
\和正则字面量里的含义不一样,所以字符串不该被当作正则字面量高亮(除非你明确需要且能解决\的转义问题)。
实际解决思路与注意事项
- 主流编辑器(比如VS Code)原生不支持直接给
new RegExp的字符串参数做正则字面量高亮,但可以靠编辑器插件实现:- 安装专门的正则语法高亮插件,有些插件能识别你写的
/*regex*/这类注释标记,自动给后面的模板字符串启用正则高亮。 - 部分插件支持自定义规则,你可以设置让特定注释后的字符串触发正则高亮。
- 安装专门的正则语法高亮插件,有些插件能识别你写的
- 但一定要重视你提到的转义问题:正则字面量里的
\b是单词边界,模板字符串里的\b却是退格符,实际用的时候得写成\\b才能让正则生效。要是只追求高亮不管转义,写出来的正则逻辑会和字面量版本完全不一样,这是必须注意的硬伤。
如果只是临时想看高亮效果,也可以先写正则字面量,确认逻辑没问题后再转成new RegExp形式,记得手动把所有转义符再加一层。
内容的提问来源于stack exchange,提问作者Nor.Z
相关产品推荐
相关产品推荐

