正则表达式只允许小数输入

时间:2011-11-28 13:39:25

标签: regex

^(0)?[0-9]{0,}((\.){1}[0-9]{0,2}){0,1}$

上面的正则表达式允许我输入最多4个小数位的数字,并在小数点(。)之前输入0。但是当我没有输入小数字后的数字时,不会抛出错误,如0.,12等。 !!!

对此有任何指导。

2 个答案:

答案 0 :(得分:4)

这是因为您在.之后允许0到2位数。

既然你说你想要1到4位数,你可能想要这个:

^[0-9]*(\.[0-9]{1,4})?$

注意,我已将{0,}替换为*,将{0,1}替换为?,因为它们是等效的。

此外,我删除了{1},因为它默认匹配一次。

初始(0)?也有点多余。

请注意,此正则表达式与.50匹配。如果您想确保小数点前面有一个数字,请将第一个*更改为+,如下所示:

^[0-9]+(\.[0-9]{1,4})?$

为了进一步简化正则表达式,您还可以在大多数正则表达式引擎中将[0-9]替换为\d,为您提供:

^\d+(\.\d{1,4})?$

答案 1 :(得分:2)

这个正则表达式可以简化为以下内容:

^\d*(\.\d{1,4})?$

您可以在此处看到它:http://regexr.com?2vamh