正则表达式匹配正数或负数或空字符串,但不单独" - "

KWe*_*iss 3 javascript regex numbers

我想验证Javascript输入中的数字.

输入应接受:

  • 空输入''
  • 正数'123'
  • 负数'-123'

我用过这个正则表达式:

^(-?)[\d]*$
Run Code Online (Sandbox Code Playgroud)

它效果很好,但它也只接受减号字符' - '.我想排除这种可能性.我当然可以替换*+,但这将排除空字符串.

我怎么能这样做,以便-必须后跟至少一个数字,但一个完全空的字符串仍然可以吗?

Wik*_*żew 5

您可以将数字设为必填项,并将整数匹配部分与可选组包含在一起:

/^(?:-?\d+)?$/
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

细节

  • ^ - 字符串的开头
  • (?:-?\d+)? - 可选的非捕获组,匹配1或0次出现:
    • -? - 可选的 -
    • \d+ - 1位或更多位数
  • $ - 字符串结尾.