Почему исчез один доллар? - PullRequest
2 голосов
/ 14 марта 2019

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

Почему это происходит?Как обойти эту ошибку?

Ответы [ 3 ]

2 голосов
/ 14 марта 2019

Согласно документам MDN для String.prototype.replace (как указано в @Alex), существует список специальных шаблонов, которые оцениваются соответствующим образом, и один из них используется вами.

Специальный шаблон выглядит следующим образом:

  • $$ вставляет $

См. MDN документы для полнойсписок специальных шаблонов.

И, как прокомментировал @ H.Figueiredo, вы можете избежать знака доллара или следовать одному из ответов, опубликованных через несколько секунд после этого ответа.

2 голосов
/ 14 марта 2019

См .: MDN - String.prototype.replace # Указание функции в качестве параметра

Строка замены может содержать следующие специальные шаблоны замены:

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$$
0 голосов
/ 14 марта 2019

См. Документацию для передачи замещающей строки в replace.

$ - специальный символ.Чтобы выразить литерал $, используйте $$.

let str = '$$double_dollars$$'
console.log(str.replace('$$double_dollars$$', '$$$$result$$$$'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...