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

tsh*_*tsh 9 javascript regex replace escaping

我想用另一个字符串替换字符串.我发现当replaceValue包含时"$",替换将失败.所以我想逃跑"$""$$"第一.代码如下所示:

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

但我觉得它很难看,因为我需要写4美元符号.

我还需要逃避任何其他角色吗?有没有更好的方法来做到这一点?

Leo*_*nid 19

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

var str = ..., reg = ...;
function replaceString(replaceValue) {
  return str.replace(reg, function () { return replaceValue });
}
Run Code Online (Sandbox Code Playgroud)


nha*_*tdh 7

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

根据第15.5.4.11的String.prototype.replace ECMAScript规范版本5.1,所有特殊替换序列始于$($&,$`,$',$n,$nn),并$$指定一个$在更换.

因此,如果替换文本是按照字面意思对待的话,就像你现在正在做的那样,$以双倍的方式逃避所有$$.

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