jQuery,格式化美元金额输入时控制台错误

jQuery,格式化美元金额输入时控制台错误,jquery,Jquery,我遇到了一个问题,我制作了一个jQuery脚本,用于将货币输入格式化为正确的2位小数和一个逗号(1000)。它在chrome中工作得很好,但当我在Edge中测试时,控制台日志显示“意外量词”错误,在firefox中,控制台显示“无效正则表达式组”错误 以下是引发错误的行: return value.replace(/(?!\.)\D/g, "").replace(/(?<=\..*)\./g, "").replace(/(?<=\.\d\d).*/g, "").replace(/\B

我遇到了一个问题,我制作了一个jQuery脚本,用于将货币输入格式化为正确的2位小数和一个逗号(1000)。它在chrome中工作得很好,但当我在Edge中测试时,控制台日志显示“意外量词”错误,在firefox中,控制台显示“无效正则表达式组”错误

以下是引发错误的行:

return value.replace(/(?!\.)\D/g, "").replace(/(?<=\..*)\./g, "").replace(/(?<=\.\d\d).*/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");

返回值。替换(/(?!\)\D/g,“”)。替换(/(?好的,多亏@zer00ne和他的评论,我今天学到了一些东西。首先,ES2018:RegExp lookback断言已经在Chrome中实现,目前正在使用Edge和Firefox,但还不受支持。所以我做了一些挖掘,发现例如,表达式
?可能与其重复,不是因为我使用的是dif但是当你说“我承认我在网上找到了这个格式化代码,并且不知道如何用这种方式正确格式化数字”时,你正在尝试做一些事情(将一个值格式化为货币)关于这一点,已经有一个很受欢迎的问题,我读了这篇文章,因为你真正的问题是如何格式化货币,你可以只更新你的破译代码,使用一个更广泛接受的方法。包括一个链接到这段代码的源代码的上下文,和一些html,这样我们就可以创建一个可运行的代码段,以复制你的错误e浏览器,我很高兴收回我的投票,并尝试与您进行故障排除。我需要知道的是返回值行在某些浏览器中导致错误的原因。它在chrome中工作。如果您不知道,请走开,让确实回答的人回答
$('#sg-amount').on('change click keyup input paste',(function (event) {
    $(this).val(function (index, value) {
        return value.replace(/(?!\.)\D/g, "").replace(/(?<=\..*)\./g, "").replace(/(?<=\.\d\d).*/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    });
  }));
$('#sg-amount').on('change click keyup input paste',(function (event) {
  $(this).val(function (index, value) {
    return value.replace(/(?!\.)\D/g, "").replace(/(?:\..*)\./g, "").replace(/\.(\d\d)\d?$/, '.$1').replace(/\B(?=(\d{3})+(?!\d))/g, ",");
   });
 }));