正则表达式限制输入字段,最多两位小数

时间:2013-04-22 17:32:10

标签: html regex input decimal

要求:

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

问题:

如果在输入字段中输入了两个以上的小数位,则会删除并显示所有小数位。问题在于正则表达式。

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

代码:

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);
      }
  });
});

2 个答案:

答案 0 :(得分: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
  }

答案 1 :(得分:0)

尝试

var numericReg = /^\d+\.?\d?\d?$/ ;
if( !numericReg.test(value) ) {
    value = value.replace(/^(\d+\.?\d?\d?)?.*/,'$1');
    $(this).val(value);
}