Javascript jQuery常规快速反向订单

Javascript jQuery常规快速反向订单,javascript,jquery,regex,Javascript,Jquery,Regex,我尝试在FireFox中模拟输入type='number'的逗号插入,因为它还不支持。很天真,它在Chrome中工作。我让我的正则表达式工作…只是顺序不对,我需要反转它 您可以看到,它将把数字的格式设置为123,4,而不是1234。我尝试了“reverse()”,但无法实现,Firefox表示它不是一个函数 如果有人能调整我的正则表达式,使它能正确执行我想要的任务,那就太好了,否则以相反的方式运行它就可以了。您可以做的是反转字符串,然后对其应用正则表达式,然后再次反转,解决方案如下: $(t

我尝试在FireFox中模拟输入type='number'的逗号插入,因为它还不支持。很天真,它在Chrome中工作。我让我的正则表达式工作…只是顺序不对,我需要反转它

您可以看到,它将把数字的格式设置为123,4,而不是1234。我尝试了“reverse()”,但无法实现,Firefox表示它不是一个函数


如果有人能调整我的正则表达式,使它能正确执行我想要的任务,那就太好了,否则以相反的方式运行它就可以了。

您可以做的是反转字符串,然后对其应用正则表达式,然后再次反转,解决方案如下:

 $(this).val( $(this).val().replace(".","").split("").reverse().join("").replace(/([0-9]{3}(?=([0-9])))/g, "$1,").split(""),reverse().join("");

我希望这有帮助

您可以使用以下内容:

var str = "foo 123456789.22 bar";    
str = str.replace(/\d(?=(?:\d{3})+(?!\d))/g, '$&,');

请注意,只有小数部分不超过3位时,此方法才有效,否则将在小数部分添加

尝试此方法:

  $('input').keyup(function(){
    var $this = $(this);
    var num = $this.val().replace(/,/g, '');
    $this.val(num.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"));
  });

这似乎有点简单,而且似乎有效-

。反转是数组对象的一种方法。您应该知道,许多区域性不是以这种方式表示数字的。有关中国编号系统如何将数字按4分组的讨论,请参阅,而欧洲数字通常用点分隔(1e6==1.000.000)。有更多关于数字格式的信息。@Mike Samuel:我知道,谢谢你提出来。这只会在我们公司内部的美国使用。米希尔:我更喜欢这种方法。谢谢我接受了你的回答,但非常感谢别人的帮助。我没有要求Chrome,但我只是注意到它受到了影响。在第四次按键事件后,Chrome将清除输入。如果我将输入类型设置为text,就可以了。有什么想法吗?这可能与OP无关,但此代码不适用于带小数点的数字<代码>“1000000.00001”。替换(/(\d)(?=(\d{3})+(?!\d))/g,“$1”,”)
=“1000000.00001”
,因此整数部分的格式正确,但小数部分的格式不正确。Qtax:感谢您提供了额外的十进制功能。