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 });
}
我想用另一个字符串替换一个字符串。我发现当 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 });
}