如何在此正则表达式中包含负十进制数?

use*_*107 73 regex numbers

如何通过这个正则表达式匹配负数?这个正则表达式正值正值,但我希望它也允许负值,例如-10,-125.5等.

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

谢谢

Mik*_*oud 146

您应该在开头添加一个可选的连字符-?(通过添加(?是一个量词表示一次或零次出现):

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

我用Rubular在这些值中验证了它:

10.00
-10.00
Run Code Online (Sandbox Code Playgroud)

两者都符合预期.

  • 如果有可能需要捕获明确的正确数字(+10.00,在某些应用程序中使用),你可以使用`^ [ - +]?[0-9]\d*(\.\ d +)?$` (13认同)
  • 为什么不将“[0-9]\d*”替换为“\d+”?所以 `^[-+]?\d+(\.\d+)?$`? (4认同)
  • 你应该逃避点,即`^ - ?[0-9]\d*(\.\ d +)?$` (2认同)

KF2*_*KF2 111

一些正则表达式示例:

正整数:

^\d+$
Run Code Online (Sandbox Code Playgroud)

负整数:

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

整数:

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

正数:

^\d*\.?\d+$
Run Code Online (Sandbox Code Playgroud)

负数:

^-\d*\.?\d+$
Run Code Online (Sandbox Code Playgroud)

正数或负数:

^-?\d*\.{0,1}\d+$
Run Code Online (Sandbox Code Playgroud)

电话号码:

^\+?[\d\s]{3,}$
Run Code Online (Sandbox Code Playgroud)

电话代码:

^\+?[\d\s]+\(?[\d\s]{10,}$
Run Code Online (Sandbox Code Playgroud)

1900-2099年:

^(19|20)[\d]{2,2}$
Run Code Online (Sandbox Code Playgroud)

日期(dd mm yyyy,d/m/yyyy等):

^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$
Run Code Online (Sandbox Code Playgroud)

IP v4:

^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$
Run Code Online (Sandbox Code Playgroud)


And*_*lil 10

我不知道为什么你首先需要它[0-9].

尝试:

^-?\d*(.\d+)?$
Run Code Online (Sandbox Code Playgroud)

更新

如果你想确定你在那个地方有一个数字,那么使用

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


Ros*_*Joy 9

在前面添加"-" minus后应该可以完成工作。? quantifier[0-9] expression

-?[0-9]

以供参考

  • ^b-^ quantifier匹配任何以“b”开头的字符串
  • c?-? quantifier匹配 0 或 1 次出现的“c”
  • [0-9]- 查找之间的任何字符[] brackets
  • \d- 查找一个数字0-9
  • d*-* quantifier匹配零次或多次出现的“d”
  • \.- 匹配一个"." character
  • z+-+ quantifier匹配一次或多次出现的“z”
  • e$-$ quantifier匹配任何以“e”结尾的字符串

希望,这将有助于理解问题中发布的正则表达式