VSCode 在保存时从我的正则表达式模式中删除 `\`

nyc*_*rts 9 javascript regex visual-studio-code

我正在尝试写一行:

const reg = new RegExp('\.js$');

但是我的 VSCode\在保存时从我的正则表达式中删除了。这是设置还是插件有问题?在网上搜索,但没有找到任何相关的答案。

作为参考,安装的插件有: - Angular v5 Snippets - Beautify - CodeMetrics - Chrome Debugger - EditorConfig for VSCode - npm - npm Intellisense - Prettier - TSLint - vscode-icons

wp7*_*8de 6

犯罪者是Prettier。如果formatOnSave在编辑器/用户设置中激活

// Set the default
"editor.formatOnSave": true,
// Enable per-language
"[javascript]": {
    "editor.formatOnSave": true
}
Run Code Online (Sandbox Code Playgroud)

\如果它不是有效转义序列的一部分,它将在字符串中删除。
有效的转义序列(如\\或 )\n不受影响。所以,这实际上符合您的最大利益。

  • 这是正确答案!或者至少对我来说,这是一个已知的更漂亮的问题。prettier 不允许字符串中出现“\”,并且会尝试删除它们。我仍在努力寻找一种方法来防止更漂亮的人这样做。@kshetline 的答案都是很好的解决方法.. ish。我的问题是我想连接几个正则表达式,但无法连接,因为更漂亮的格式是如此激进。 (2认同)

ksh*_*ine 4

我不确定这是否能解决您的问题,但正则表达式应该是:

const reg = new RegExp('\\.js$');
Run Code Online (Sandbox Code Playgroud)

由于您将正则表达式作为字符串执行,因此您需要使用双反斜杠来表示单个反斜杠。

或者你可以这样做:

const reg = /\.js$/;
Run Code Online (Sandbox Code Playgroud)

VSCode 可能会按照您最初编写的方式删除反斜杠,因为它是无效的转义。