在 JavaScript 中,用单个反斜杠替换字符中的反斜杠?

5
我正在使用Node.js创建一个latex模板系统。在此系统中,我需要通过在特殊字符前加上反斜杠来转义它们。
我已经阅读了双反斜杠用于插入字面上的反斜杠:
> var input = "hello & 100%"
> input.replace(/([&%$#_{}])/g, "\\$1")
'hello \\& 100\\%'

不是的。我还读过,因为它在字符串中,所以需要双重转义反斜杠:

> input.replace(/([&%$#_{}])/g, "\\\\$1")
'hello \\\\& 100\\\\%'

不行。只使用一个反斜杠也不行:

> input.replace(/([&%$#_{}])/g, "\$1")
'hello & 100%'

那么我该如何使用replace()插入一个反斜杠?

第一个的输出应该是 hello \& 100\% (http://jsfiddle.net/251obLmx/) 如果你看到 \,那么它是控制台试图提供帮助的产物吗? - Alex K.
1个回答

8

实际上,第一种方法是正确的并且有效。使用两个反斜杠可以生成一个反斜杠。

console.log("hello & 100%".replace(/([&%$#_{}])/g, "\\$1")); // "hello \& 100\%"

如果 console.log 有些麻烦,尽管它不应该出现这种情况,可以尝试使用 alert。此外,您需要使用返回值,而您现在还没有这么做。

1
我从未想到替换命令的原始输出会被额外转义!你是对的,只要我把整个东西包在console.log()里面,它就可以正确输出。谢谢! - Jamie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接