let str = '$$double_dollars$$'
console.log(str.replace('$$double_dollars$$', '$$no_double_dollars$$'));
// => $no_double_dollars$
// expected $$no_double_dollars$$
为什么会这样?如何解决该错误?
答案 0 :(得分:2)
根据String.prototype.replace
的MDN文档(如@Alex所述),有一系列特殊模式会进行相应评估,其中之一就是您正在使用的模式。
特殊模式如下:
$$
插入一个$
有关特殊模式的完整列表,请参见MDN docs。
正如@ H.Figueiredo所评论的那样,您可以转义美元符号,也可以遵循此答案几秒钟后发布的答案之一。
答案 1 :(得分:2)
请参阅:MDN - String.prototype.replace # Specifying a function as a parameter
替换字符串可以包括以下特殊替换模式:
Pattern Inserts $$ Inserts a "$". $& Inserts the matched substring. $` Inserts the portion of the string that precedes the matched substring. $' Inserts the portion of the string that follows the matched substring. $n Where n is a positive integer less than 100, inserts the nth parenthesized submatch string, provided the first argument was a RegExp object. Note that this is 1-indexed.
let str = '$$double_dollars$$'
console.log(str.replace('$$double_dollars$$', '$$$$yes_double_dollars$$$$'));
// => $$yes_double_dollars$$
答案 2 :(得分:0)
请参阅passing a replacement String to replace
的文档。
$
是一个特殊字符。要表示文字$
,请使用$$
。
let str = '$$double_dollars$$'
console.log(str.replace('$$double_dollars$$', '$$$$result$$$$'));