0

要求:

我试图将输入字段限制为仅输入数字或最多两个十进制数字的数字。如果用户输入多于两位小数,则输入字段必须仅显示最多两位小数的数字,并删除所有其他数字。我正在使用正则表达式。

问题:

当输入字段中输入多于两位小数时,所有小数位将被删除并显示。问题在于正则表达式。

请帮助我形成正确的正则表达式。

代码:

http://jsfiddle.net/h6kYh/

$(document).ready(function() {

  $("#AmountField").bind("keyup change", function() {

    var value = $(this).val();

      var numericReg = /^d+(?:\.\d{0,2})?$/ ;
      if( !numericReg.test(value) )
      {
          value = value.replace(/(?=\d*\.?)(\d{3})/g,"");
          $(this).val(value);
      }
  });
});
4

2 回答 2

0

尝试

var numericReg = /^\d+\.?\d?\d?$/ ;
if( !numericReg.test(value) ) {
    value = value.replace(/^(\d+\.?\d?\d?)?.*/,'$1');
    $(this).val(value);
}
于 2013-04-22T18:13:16.773 回答
0

它应该是

  var invalidNumericReg = /^\d+(\.\d{3,})$/;
  var validNumericReg = /^d+\(.\d{1,2})?$/;

  if( invalidNumericReg.test(value) )//has more than 3 decimal numbers!
  {
      value = value.replace(/^(\d+\.\d{2})\d+$/g,"$1");
      $(this).val(value);
  }
  else if( ! validNumericReg.test(value) )
  {
        //invalid input
  }
于 2013-04-22T17:45:49.240 回答