Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式不允许不带前导零的小数_Javascript_Angular_Regex_Ecmascript 6_Angular9 - Fatal编程技术网

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

Javascript 正则表达式不允许不带前导零的小数,javascript,angular,regex,ecmascript-6,angular9,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-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+\.$)
似乎不起作用

您可以匹配一个可选的
-
,然后使用一个负的前瞻性断言模式不会以零开头,后面跟着一个数字

感谢@对最终图案的更正

^-?(?!0\d)\d+\.?\d*$
部分模式

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

请参见a

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

感谢@对最终图案的更正

^-?(?!0\d)\d+\.?\d*$
部分模式

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

请参见a

为什么要使用正则表达式进行数值范围检查?我使用formcontrol进行输入框,并希望在与上述正则表达式不匹配时显示验证错误。您是否特别尝试排除精确值0.3、0.4和0.44,或者,您是否试图要求用户始终为小于1的分数值提供前导0?您使用的是哪种正则表达式?什么规则适用于负数?我想包括0.3,但不允许用户键入。3前面没有0。这只是第四只鸟的一个小更正。毕竟这是你的正则表达式解决方案。您应该将其作为答案发布。为什么要使用正则表达式进行数值范围检查?我使用formcontrol作为输入框,并希望在与上面的正则表达式不匹配时显示验证错误。如果您特别尝试排除精确值0.3、0.4和0.44,或者,您是否试图要求用户始终为小于1的分数值提供前导0?您使用的是哪种正则表达式?什么规则适用于负数?我想包括0.3,但不允许用户键入。3前面没有0。这只是第四只鸟的一个小更正。毕竟这是你的正则表达式解决方案。你应该把它作为答案贴出来。