让IE用文字字符串"$ 0"替换正则表达式

Mar*_*ahn 4 javascript regex replace

我正在使用美元金额替换正则表达式中的一堆值.问题是在IE中,如果我尝试用一​​定量的$0(或理论上的$1- $9)替换,那么替换永远不会发生,因为它试图替换一个不存在的组:

'foo'.replace(/f/g, '$0');
Run Code Online (Sandbox Code Playgroud)

我希望替换的结果是"$ 0oo",它在Chrome&FF中,但不是IE9(没有尝试过其他版本的IE).

Chrome和FF有以下"问题",因为我无法弄清楚如何用文字替换$1:

'foo'.replace(/(f)/g, '$1')
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 9

"$$0"逃避$标志.


mae*_*ics 5

在Chrome和Firefox中,您可以通过使用函数作为replace函数的第二个参数来解决此限制:

'foo'.replace(/(f)/g, function(){return '$1';}); // => $1oo
Run Code Online (Sandbox Code Playgroud)

我自己的测试表明,IE8在此问题上与其他浏览器是一致的。