javascript - 在 String.prototype.replace 使用的字符串中转义美元符号的更好方法

javascript - Better Way to Escape Dollar Signs in the String Used By String.prototype.replace

我想用另一个字符串替换一个字符串。我发现当 replaceValue 包含 "$" 时,替换将失败。所以我想先通过 "$$" 来逃避 "$" 。代码如下所示:

var str = ..., reg = ...;
function replaceString(replaceValue) {
  str.replace(reg, replaceValue.replace(/$/g, '$$$$'));
}

但我认为它很难看,因为我需要写 4 个美元符号。

还有其他需要转义的字符吗?有没有更好的方法来做到这一点?

很遗憾,您对此无能为力。
这就是 JavaScript 如何与正则表达式一起工作。

这是一篇很好的文章,其中列出了您应该注意的所有替换模式: http://es5.github.io/#x15.5.4.11

您对替换字符串进行转义的方法是正确的。

根据 ECMAScript specification edition 5.1 的第 15.5.4.11 String.prototype.replace 节,所有特殊替换序列都以 $ 开头($&$`$'$n$nn) 和 $$ 在替换中指定单个 $

因此,如果要按字面意思处理替换文本,那么用双 $$ 转义所有 $ 就足够了。

据我所知,没有其他简洁的方法可以进行替换。

有一种方法可以调用replace,让我们不用担心转义。

var str = ..., reg = ...;
function replaceString(replaceValue) {
  return str.replace(reg, function () { return replaceValue });
}