【问题标题】:Regular expression for number with digit length limit including decimal [closed]具有数字长度限制的数字的正则表达式,包括小数[关闭]
【发布时间】:2018-01-26 00:07:04
【问题描述】:

我在验证一个包含最多 11 位数字(包括十进制数和小数点后两位数(如果有))的文本框时遇到问题。关于 jquery 中的 keyup。

我使用这个正则表达式 /^(\d+)?([.]?\d{0,2})?$/g 来验证数字和带两位数的小数,但我不知道如何将最大位数限制为 11。

我已将输入 type numberma​​xlength 一起使用,但它不起作用。

Fiddle Is here

HTML

<input type="number" />

jQuery

 $('input').keyup(function() {
        var $th = $(this);
        $th.val( $th.val().match(/^(\d+)?([.]?\d{0,2})?$/g, 
        function(str) { 
          return ''; }
          ) );
    });

这样的价值观

64123841.33 123456789.1、12345678901、 1.22,

请帮帮我。

【问题讨论】:

标签: jquery regex validation input


【解决方案1】:
^\d{0,8}\.\d{1,2}$|^\d{0,11}$

here 是工作示例

【讨论】:

  • 再次查看您的 regex101 示例。它并没有真正匹配。它将3123123 作为一个匹配项,. 作为一个匹配项,22 作为一个匹配项。
  • @Olian04 现在只检查一次
【解决方案2】:

使用前瞻来测试长度:

/^(?=.{1,11}$)\d+(?:\.\d{1,2})?$/

(?=.{1,11}$) 是一个前瞻,确保我们有 1 到 11 个字符

(?:\.\d{1,2})? 是一个可选的非捕获组,允许 1 位或 2 位小数

【讨论】:

  • 为什么不maxlength="11"
  • @WiktorStribiżew:因为 OP 想要一个正则表达式。但是,当然,属性maxlength="11" 是另一种解决方案。
猜你喜欢
  • 2019-09-13
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
相关资源
最近更新 更多