2015-10-22 30 views
-1

提起我正在使用的文本字段正则表达式的数字格式文本数字格式,我已经实现了一个逗号,每3个位数后插入类似下面正则表达式|在我的网页

  • 123的功能 - > 123
  • 1234 - > 1,234
  • 123456-> 123456

我使用下面的函数来实现这一目标。

function Comma(Num) { //function to add commas to textboxes 
     Num += ''; 
     Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', ''); 
     Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', ''); 
     x = Num.split('.'); 
     console.log(x); 
     x1 = x[0]; 
     x2 = x.length > 1 ? '.' + x[1] : ''; 
     console.log(x1); 
     console.log(x2); 
     var rgx = /(\d+)(\d{2})/; 
     while (rgx.test(x1)) 
      x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
     console.log("x1: "+x1); 
     return x1 + x2; 
    } 

<input maxlength="" class="form-control preco number" name="preco[]" onkeyup = "javascript:this.value=Comma(this.value);" required> 

我想要实现什么是以下格式

  • 12-> 12
  • 123 - > 1,23
  • 1234 - > 12,34
  • 123456-> 1.234,56

你能指导我如何使用正则表达式来实现这种格式?

+3

你能解释一下你想要的格式好一点?放置'.'和','的规则是什么? “12345678”和“123456789”会是什么? –

+0

@SpencerWieczorek a','放在2位数后,然后在每3位数字后放一个'.'。这将是123.456,78和1.234.567,89! –

回答

0

试试这个

^-?\d{1,3}(,\d{3})*(\.\d\d)?$|^\.\d\d$ 

结果

1 
12 
.99 
12.34 
-18.34 
12,345.67 
999,999,999,999,999.99