^(0)?[0-9]{0,}((\.){1}[0-9]{0,2}){0,1}$
上面的正则表达式允许我输入最多4个小数位的数字,并在小数点(。)之前输入0。但是当我没有输入小数字后的数字时,不会抛出错误,如0.,12等。 !!!
对此有任何指导。
答案 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)