在我的程序中,我试图编写一个与正则表达式完全相同的字符串,该字符串表示正则表达式。这意味着保留字符串中出现的所有反斜杠。但是,当我尝试将此字符串写入文件时,每对反斜杠都比应有的反斜杠少一个。
我的示例来演示此问题是这样的:
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,但这是我真正尝试做的一个有些人为的示例。这小段代码恰好说明了手头的问题。
最佳答案
如果要在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}
一个反斜杠跳过后面的反斜杠...