Javascript 非零负十进制数的正则表达式

Javascript 非零负十进制数的正则表达式,javascript,regex,Javascript,Regex,我正在使用^-\d*\.?\d+$进行负数匹配。但这接受-0。 我想限制regexp与-0匹配。有人能帮忙吗? 提前谢谢 您可以使用 ^-(?!0*\.?0+$)\d*\.?\d+$ ^^^^^^^^^^^^ 见 (?!0*\.?0+$)如果字符串只包含-,然后是一个表示零的int/float型数字,则负前瞻将导致匹配失败 详细信息: ^-字符串的开头 --连字符 (?!0*\.?0+$)-在当前位置之后,如果以下模式匹配,则匹配失败: 0*-零或更多0s \?-可选的 0+-1或更多

我正在使用
^-\d*\.?\d+$
进行负数匹配。但这接受-0。 我想限制regexp与-0匹配。有人能帮忙吗? 提前谢谢

您可以使用

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

(?!0*\.?0+$)
如果字符串只包含
-
,然后是一个表示零的int/float型数字,则负前瞻将导致匹配失败

详细信息

  • ^
    -字符串的开头
  • -
    -连字符
  • (?!0*\.?0+$)
    -在当前位置之后,如果以下模式匹配,则匹配失败:
    • 0*
      -零或更多
      0
      s
    • \?
      -可选的
    • 0+
      -1或更多
      0
      s
    • $
      -字符串结尾
  • \d*
    -0+位
  • \?
    -可选的
  • \d+
    -1个或多个数字
  • $
    -字符串结束

    • 也许正则表达式不是正确的工具

      var input = "-1234"; // or whatever
      
      var num = +input;
      if( isNaN(num)) throw new Error("Invalid input");
      if( num >= 0) throw new Error("Only negative numbers allowed");
      // num is a valid negative number. Done.
      

      如果这个数字是-0.234,也就是说,这个数字以零开始,但不是零。你不想得到这个号码吗?我想让那个号码匹配。我不想要任何像-0、-0.000、-00000000这样的匹配。。任何为零的内容都不应匹配。