Javascript替换为在IE 11中无效的正则表达式

时间:2014-10-16 15:02:06

标签: javascript internet-explorer-11

由于我的公司正试图从IE8升级到IE11,因此我遇到了一些遗留代码的javascript问题。我有一段javascript,它在一个字段中找到所有逗号,并用几个字符替换它,如下所示:

document.frm.txt_fieldValue[1].value = 
document.frm.txt_fieldValue[1].value.replace(/,/gi, "$0");

然而,在我的代码中,这一切都在一行上。此代码适用于IE8,Chrome和Firefox。但是,在IE9 +中,特别是IE11(因为这是我公司升级到的),此代码不会替换任何逗号。我可以使用以下代码替换单个逗号:

document.frm.txt_fieldValue[1].value = 
document.frm.txt_fieldValue[1].value.replace(",", "$0");

因为我替换了一个逗号,所以我知道我的代码已经到达。但我已经四处寻找,我还没有找到一个可靠的答案。还有其他人有这个问题吗?如果是这样,有没有人找到解决方案?

谢谢!

2 个答案:

答案 0 :(得分:2)

您需要将其替换为“$$ 0”,转义后将变为真实的$0。我怀疑这个代码是否在任何浏览器上都能正常工作。

答案 1 :(得分:1)

我最近修复了一个可能有帮助的错误。

如果您要替换的值为0 - 作为值而不是字符串 - IE11将仅附加替换字符串而不是实际替换它。

以下是我的工作内容:

buf = buf.replace( /%%TOTALAMOUNT%%/gim, "$" + parseFloat( g_UserPurchases[LCV].CurrencyValue.val() ).toFixed(2) );                        

打印出来:" %% TOTALAMOUNT %%。00 "

我通过检查确定了它:

if( ( g_UserPurchases[LCV].CurrencyValue.val() == 0 ) || ( g_UserPurchases[LCV].CurrencyValue.val() === 0 ) ){
//IE fix: IE did not like the $ character and didn't replace if val = 0
buf = buf.replace( /%%TOTALAMOUNT%%/gim, "$0.00");    }

请注意:IE11没有替换美元符号字符$。所以,我改为使用了字符代码:

$

希望这有帮助!