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

Pre*_*shu 1 regex

^(0)?[0-9]{0,}((\.){1}[0-9]{0,2}){0,1}$
Run Code Online (Sandbox Code Playgroud)

上面的正则表达式使我可以输入最多4个小数位的数字,并在小数点(。)点之前输入一个可选的0。但是当我不输入小数点后的数字(如0、12等)时,这不会引发错误。!!!

任何指导。

Seb*_*olm 5

这是因为您允许在0到2位之间输入数字.。

由于您说的是1到4位数字,因此您可能需要这样做:

^[0-9]*(\.[0-9]{1,4})?$
Run Code Online (Sandbox Code Playgroud)

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

另外,我还删除了{1},因为它默认情况下匹配一次。

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

当心,此正则表达式匹配.50。如果要确保小数点之前存在数字,则将第一个*改为+如下:

^[0-9]+(\.[0-9]{1,4})?$
Run Code Online (Sandbox Code Playgroud)

为了进一步简化正则表达式,你也可以更换[0-9]与\d大多数正则表达式引擎,为您提供:

^\d+(\.\d{1,4})?$
Run Code Online (Sandbox Code Playgroud)