Java替换全部在macOS / iOS上的safari中不起作用

问题描述 投票:0回答:1

我在macOS / iOS上的Safari浏览器中遇到错误

考虑到我需要用实际价格替换占位符

const formattedPrice = '$1,100.00';
str.replace( /\|\|TOTAL_REPAYMENT_CHARGES\|\|/g, formattedPrice);

以上结果为,100.00

但是如果我使用下面的一个,它会起作用

const formattedPrice = '$1,100.00';
str.replace( '||TOTAL_REPAYMENT_CHARGES||', formattedPrice)

结果将是$1,100.00

有人可以解释发生了什么吗?谢谢

javascript str-replace
1个回答
0
投票

[当.replace的第一个参数是正则表达式,而.replace的第二个参数是字符串时,JS会解析第二个参数according to some rules,从而可以用完全匹配或捕获组进行简洁的替换。例如,$&表示替换为完全匹配:

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);
© www.soinside.com 2019 - 2024. All rights reserved.