Когда первый параметр .replace
является регулярным выражением, а второй параметр .replace
является строкой, JS будет анализировать второй параметр в соответствии с некоторыми правилами , что позволяет краткая замена с полным совпадением или группой захвата. Например, $&
указывает на необходимость замены на полное совпадение:
console.log('foo'.replace(/o/g, 'a$&'));
Выше каждое совпадение заменяется на a
, за которым следует полное совпадение, и оба совпадения равны o
, поэтому оба совпадения заменяются на ao
.
В вашем коде $1
интерпретируется как «заменить эту часть первой группой захвата». Но в вашем коде нет групп захвата, поэтому вместо замены совпадений на '$1,100.00'
они заменяются на ',100.00'
.
Чтобы указать литерал $
, используйте two $
с, вот так:
const formattedPrice = '$$1,100.00';
// ^
str.replace( /\|\|TOTAL_REPAYMENT_CHARGES\|\|/g, formattedPrice);