为什么一个$消失了?

时间:2019-03-14 11:47:42

标签: javascript string replace

let str = '$$double_dollars$$'
console.log(str.replace('$$double_dollars$$', '$$no_double_dollars$$'));
// => $no_double_dollars$
// expected $$no_double_dollars$$

为什么会这样?如何解决该错误?

3 个答案:

答案 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$$$$'));