正则表达式不允许不带前导零的小数

regex to not allow decimal fractions without leading zero

正则表达式 (^-?[1-9]*?0?(\.\d+)?$)|(^\d+\.$) 允许用户键入以下小数或整数值

0.500
3
0
0.0
30
500000
4000.22
0.
-0.500
-3

不允许

03.3, 00, 02, 00.0

但是上面的正则表达式也允许 .3, .4

有没有办法不让.3.44谢谢

我的尝试: (^-?[1-9]*?0+?(\.\d+)?$)|(^\d+\.$) 这似乎不起作用

您可以匹配一个可选的 -,然后使用否定先行断言该模式不是以零后跟数字开头。

感谢@anubhava 对最终模式的修正。

^-?(?!0\d)\d+\.?\d*$

零件的图案

  • ^ 字符串开头
  • -? 匹配可选连字符
  • (?!0\d) 否定前瞻,断言直接在右边的不是0和数字
  • \d+ 匹配 1+ 个数字
  • \.?\d*匹配可选.和0+位
  • $ 字符串结束

看到一个regex demo