我想用另一个字符串替换字符串。我发现当replaceValue包含"$"
时,替换将失败。所以我试图首先"$"
"$$"
。代码如下所示:
var str = ..., reg = ...;
function replaceString(replaceValue) {
str.replace(reg, replaceValue.replace(/\$/g, '$$$$'));
}
但我认为这很难看,因为我需要写4个美元符号。
我还有其他特征需要逃脱吗?还有更好的方法吗?
答案 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