具有数字长度限制的数字的正则表达式,包括小数[关闭]
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 number 与 maxlength 一起使用,但它不起作用。
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"
是另一种解决方案。以上是关于具有数字长度限制的数字的正则表达式,包括小数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章