具有数字长度限制的数字的正则表达式,包括小数[关闭]

Posted

技术标签:

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

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

我使用这个正则表达式 /^(\d+)?([.]?\d0,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+)?([.]?\d0,2)?$/g, 
        function(str)  
          return ''; 
          ) );
    );

这样的价值观

64123841.33 123456789.1、12345678901、 1.22,

请帮帮我。

【问题讨论】:

你能举一些有效和无效值的例子吗?例如,12345678901.11 是否有效? 共11位或小数点前11位 @RoryMcCrossan 喜欢 123456789.1、12345678901、1.22 Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems. - Jamie Zawinski 因此,您想设置总文本长度的限制。为什么不使用maxlength="11" 【参考方案1】:
^\d0,8\.\d1,2$|^\d0,11$

here 是工作示例

【讨论】:

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

使用前瞻来测试长度:

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

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

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

【讨论】:

为什么不maxlength="11" @WiktorStribiżew:因为 OP 想要一个正则表达式。但是,当然,属性maxlength="11" 是另一种解决方案。

以上是关于具有数字长度限制的数字的正则表达式,包括小数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

JS正则表达式,限制输入数字,且小数点保留两位

正则表达式限制输入框,只能输数字,当输入小数的时候,四舍五入为整数。

java正则表达式匹配所有数字,包括带小数点的数字

js正则表达式只包含数字和小数点

从字符串中提取分数、小数和数字的正则表达式[关闭]

0到100(包括小数点,0和100)正则表达式怎么样写!急急。。 例如:80.6