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

时间:2020-10-20 06:08:20

标签: javascript angular regex ecmascript-6 angular9

正则表达式(^-?[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+\.$)似乎无效

1 个答案:

答案 0 :(得分:2)

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

感谢@ anubhava进行更正以形成最终图案。

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

部分图案

  • ^字符串的开头
  • -?匹配可选的连字符
  • (?!0\d)负向查找,则断言右边直接不为0和一个数字
  • \d+匹配1个以上的数字
  • \.?\d*匹配可选的.和0+位数字
  • $字符串结尾

查看regex demo