javascript - 更好的方法来逃避String.prototype.replace使用的字符串中的美元符号

时间:2015-01-23 03:20:37

标签: javascript regex replace escaping

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

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

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

我还有其他特征需要逃脱吗?还有更好的方法吗?

3 个答案:

答案 0 :(得分:18)

有一种方法可以调用replace,让我们不必担心逃避任何事情。

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

答案 1 :(得分:7)

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

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

因此,如果替换文本是按字面意思处理的话,就像你现在正在做的那样,用$转义所有$$就足够了。

就我所见,没有其他简洁的方法可以替换。

答案 2 :(得分:1)

不幸的是,你无能为力 这就是JavaScript如何使用正则表达式。

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