Javascript String.raw输出“${quot;和bacticks

Javascript String.raw输出“${quot;和bacticks,javascript,Javascript,我正在使用String.raw来保存内容,以保存一个正则表达式,该正则表达式在我拥有的正则表达式中包含类似${somevalue}的值。它可以工作,除非似乎无法转义${}或反勾号。 例如,这不起作用 String.raw`${}` // error String.raw`$\{}` // wrong output String.raw`\${}` // wrong output String.raw`\`` /wrong output 不幸的是,我能想出的最好的解决办法是以下几点

我正在使用
String.raw
来保存内容,以保存一个正则表达式,该正则表达式在我拥有的正则表达式中包含类似
${somevalue}
的值。它可以工作,除非似乎无法转义
${}
或反勾号。 例如,这不起作用

String.raw`${}`  // error
String.raw`$\{}`  // wrong output
String.raw`\${}`  // wrong output
String.raw`\``    /wrong output
不幸的是,我能想出的最好的解决办法是以下几点

String.rawer= (s)=>{return s.raw[0].replace(/\\\{/g,"{").replace(/\\`/g,'`').replace(/\\\\$/,'\\')}

有没有一种解决方案不那么难看,不需要定义自己的函数和后续函数调用?

我认为这看起来比您现有的更干净


console.log(String.raw`${“${}}}`)
我认为这看起来比你的更干净


console.log(String.raw`${${}}`)
这是一个有趣的问题,它显示了模板字符串的一个缺点,但不知道为什么和如何使用
String.raw
并且不想使用模板函数,感觉有点像XY问题。@DenysSéguret我被你的评论弄糊涂了。我有自己的RegExp引擎,我正在使用,就像问题的状态和状态一样我需要${在RegExp中。如果你想让我发布实际的代码,我可以,但它真的不会改变问题。我想添加RegExp可能是我能想到的String.raw的唯一用例。我的主要希望是有一个非文档化的rawer函数,它将它向前推进了一步,并允许您转义&{.我同意说我不想要函数调用或模板有点牵强,但我希望并假设有一个标准的方法。这是一个有趣的问题,它显示了模板字符串的一个缺点,但不知道为什么和如何使用
String.raw
,不想使用模板函数,感觉有点像XY问题。@DenysSéguret我被你的评论弄糊涂了。我有自己的RegExp引擎,我正在使用,就像问题状态和我需要的一样${在RegExp内。如果您想让我发布实际代码,我可以,但它确实不会改变问题。我想添加RegExp,这可能是我能想到的String.raw的唯一用例。我的主要希望是,有一个非文档化的rawer函数,它将它向前推进了一步,并允许您转义&{。我同意说我不想要函数调用或模板有点过分,但我曾希望并假设有一种标准的方法。我认为这不是更干净,而是另一种解决方案。我认为这不是更干净,而是另一种解决方案。