`string.replace` странное поведение при использовании знака доллара ($) в качестве замены
Я нашел ошибку в моем JavaScript-коде, который я выделил для замены строки, которая действует так, как я не ожидал. Вот пример кода:
var text = "as";
text = text.replace(text,"$\'");
console.log(text);
Это выводит пустую строку на консоль. Я ожидал, что он напечатает $'на консоли. Может кто-нибудь объяснить это?
Ответы
Ответ 1
Чтобы использовать $
в результирующей строке, используйте $$
, поскольку $
имеет особое значение в JavaScript Regular Exions и String replace
method: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter
Ответ 2
Если я не знаю, что находится в моей заменяющей строке, я использую
replaceWith = "might have 2 $ signs $$ $$$ $$$$"
"a b c".replace("b", replaceWith) // unexpected result
"a b c".replace("b", function(){return replaceWith}) // no surprises