Javascript 使用字符串和模板文本的concatentation的转义字符串

Javascript 使用字符串和模板文本的concatentation的转义字符串,javascript,Javascript,我需要将untrusted*数据连接到javascript字符串中,但我需要它适用于所有类型的字符串(单引号、双引号或反勾引号) 理想情况下,我需要它同时处理多个字符串类型 我可以用字符串替换,但这通常是个坏主意 我使用的是JSON.stringify,但它只转义双引号,而不是单引号或反引号 我发现的其他答案涉及一次仅转义一种类型的引用(并且从不回溯) 我需要的一个例子: untrustedData = 'a String with \'single quotes\', \"doubl

我需要将untrusted*数据连接到javascript字符串中,但我需要它适用于所有类型的字符串(单引号、双引号或反勾引号) 理想情况下,我需要它同时处理多个字符串类型

我可以用字符串替换,但这通常是个坏主意

我使用的是JSON.stringify,但它只转义双引号,而不是单引号或反引号

我发现的其他答案涉及一次仅转义一种类型的引用(并且从不回溯)

我需要的一个例子:

untrustedData = 'a String with \'single quotes\', \"double quotes\" and \`backticks\` in it';
const someJS = `console.log(\`the thing is "${escapingFunctionHere(untrustedString)}"\`)`
someJS
将被传递给
new函数

*注意:在我的上下文中,这里的“不可信”并不意味着潜在的恶意,但它确实需要处理引用、逃逸等问题

我正在动态构建javascript代码,构建的代码将不会以任何方式面向web。事实上,我可能是唯一一个直接或间接使用此工具的人

我很乐意接受最小的相关风险

其他人注意:在做这类事情之前,确保你了解风险

对于那些感兴趣的人,我正在编写一个解析器创建者。给定一个输入ebnf语法文件,它将输出一个JS类,该类可用于解析内容。
我真的需要在这里输出代码。

如果您只需要转义单引号
、双引号
和反斜杠
`
,那么使用来预加反斜杠
\
就足够了:

untrustedData.replace(/['“`]/g,\\\$&'))
const untrustedData='I'am\'是一个'string';
console.log(不可信数据);
const escapedData=untrustedData.replace(/['“`]/g,\\\$&');

console.log(escapedData);
我会显示预期的输出,但我可能会以某种方式出错……”“someJS将被传递给新函数”,这似乎是要尝试和更改的,而不是“如何从随机输入动态生成有效的JS代码?”“@VLAZ我愿意接受这方面的建议。我确实需要输出将要执行的JS。最终,无论您是使用
新函数
评估
,还是将输出写入一个文件,然后
要求
它,转义要求都将是相同的…您能否详细说明更大的图景,以及为什么这一切都是从…开始的“必要”?您的答案不处理输入字符串中的“\”。它还不能处理什么?这就是为什么我不想用字符串替换答案的原因您希望输出中的
'\'
变成什么?这个问题似乎是相关的: