jQuery正则表达式反向顺序

时间:2011-07-07 19:50:34

标签: javascript jquery regex

我正在尝试模仿FireFox中输入类型='数字'的逗号插入,因为它还不支持它。天真的,它适用于Chrome。我让我的正则表达式工作......只是没有正确的顺序,我需要扭转它。

http://jsfiddle.net/hCTDV/2/

您可以看到它会将数字格式设置为123,4而不是1,234。我尝试'反向()',但我无法让它工作,F​​irefox声称它不是一个功能。

如果有人可以调整我的正则表达式,那么它可以正确执行我想要的任务,那么反之亦然。

3 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

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

http://jsfiddle.net/Ar3Qv/

请注意,这只会在小数部分不超过3位时起作用,否则它也会在小数部分添加,

答案 1 :(得分:1)

试试这个方法:

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

似乎有点简单,似乎有效 - http://jsfiddle.net/hCTDV/3/

答案 2 :(得分:0)

你可以做什么你可以反向字符串然后应用正则表达式然后再反转它,解决方案如下:

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

我希望这会有所帮助