【问题标题】:Regular Expression to restrict input field with atmost two decimal places正则表达式限制输入字段最多有两位小数
【发布时间】:2013-04-15 17:07:26
【问题描述】:

要求:

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

问题:

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

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

代码:

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

【问题讨论】:

    标签: html regex input decimal


    【解决方案1】:

    应该是

      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 而不是\1
    • 谢谢阿尼鲁德。但是我想保留并显示最多两位小数的数字,以防输入并仅删除第三位的小数。你可以为它推荐正则表达式吗?
    • 输入字段接受 .655.5555、.65582722、.aahs.djdhdd、jj.d93.dijs.766 等,这不是预期的。
    • @user2229399 检查编辑..您只需要检查无效输入
    • 是的,好的,迈克和阿尼鲁德。我会尝试。非常感谢您的建议:)
    【解决方案2】:

    试试

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

    【讨论】:

    • @user2229399。固定的。我没有意识到你正在测试每一个按键。
    • 11.aa 将变为 11.
    • @Anirudh。是的,如果 OP 正在对每个按键进行测试,那么必须允许 . 后面没有数字。
    • var numericReg = /^d+(?:\.\d{0,2})?$/ ; if( !numericReg.test(value) ) { value = value.replace(/^(\d+\.?\d?\d?)?.*/g,'$1'); $(this).val(value);好的,最后我到达了这个代码。它接受“12”。 .但我想将其更改为“12”。也就是说,如果使用小数点而不给出任何十进制值,我希望它成为一个整数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多