在我的程序中,我尝试编写一个表示正则表达式的字符串,就像写入文件一样。这意味着保留字符串中出现的任何反斜杠。但是,当我尝试将此字符串写入文件时,每对反斜杠的反斜杠都少于应有的反斜杠。
我证明这个问题的例子是这样的:
let filepath = path.join(__dirname, 'output.js');
let outputString = "\\d{3}(-|\\s)?\\d{3}(-|\\s)?\\d{4}";
fs.writeFileSync(filepath, outputString, 'utf-8');
输出结果为:
\d{3}(-|\s)?\d{3}(-|\s)?\d{4}
是否有一些选项可以传递给fs.writeFileSync
以保持字符串中的所有字符都写入文件?
我意识到一个解决方案可能涉及使用类似js-string-escape的库转义此字符串中的所有可能字符,但由于这些特定字符串代表正则表达式,所以真的安全吗?我不想以任何方式改变它们或它们的功能。
注意:我意识到这个输出并不是真正有效的JavaScript,但它是我真正想要做的一个有点人为的例子。这段小代码最能说明手头的问题。
答案 0 :(得分:1)
如果你想在outputString中有两个反斜杠,那么就会有四个反斜杠。 例:
let filepath = path.join(__dirname, 'output.js');
let outputString = "\\\\d{3}(-|\\\\s)?\\\\d{3}(-|\\\\s)?\\\\d{4}";
fs.writeFileSync(filepath, outputString, 'utf-8');
输出结果为:
\\d{3}(-|\\s)?\\d{3}(-|\\s)?\\d{4}
一个反斜杠跳过后面的反斜杠......