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