如何在这个正则expression式中包含负数小数?

我如何通过这个正则expression式匹配负数? 这个正则expression式可以正常工作,但我希望它也允许负值,例如-10,-125.5等

^[0-9]\d*(\.\d+)?$ 

谢谢

你应该添加一个可选的连字符在开始时join-??是一个量词,表示一个或零个事件 ):

 ^-?[0-9]\d*(\.\d+)?$ 

我用Rubular对这些值进行了validation:

 10.00 -10.00 

并如预期的那样匹配。

一些正则expression式示例:

正整数

 ^\d+$ 

负整数

 ^-\d+$ 

整数

 ^-?\d+$ 

正数

 ^\d*\.?\d+$ 

负数

 ^-\d*\.?\d+$ 

正数或负数

 ^-?\d*\.{0,1}\d+$ 

电话号码

 ^\+?[\d\s]{3,}$ 

电话号码

 ^\+?[\d\s]+\(?[\d\s]{10,}$ 

1900-2099年

 ^(19|20)[\d]{2,2}$ 

date (日/月/年/月/年)

 ^([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])$ 

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}$ 

我不知道你为什么需要第一个[0-9]

尝试:

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

更新

如果你想确定你会在某个地方有一个数字,然后使用

 ^-?\d+(.\d+)?$ 

只有在后面跟着一个数字时,这将允许一个-+字符:

  ^([+-](?=\.?\d))?(\d+)?(\.\d+)?$ 

已更新(13/08/2014):这是正数和负数的最佳代码=)

 (^-?0\.[0-9]*[1-9]+[0-9]*$)|(^-?[1-9]+[0-9]*((\.[0-9]*[1-9]+[0-9]*$)|(\.[0-9]+)))|(^-?[1-9]+[0-9]*$)|(^0$){1} 

我试着用这个数字,工作正常:

 -1234454.3435 -98.99 -12.9 -12.34 -10.001 -3 -0.001 -000 -0.00 0 0.00 00000001.1 0.01 1201.0000001 1234454.3435 7638.98701 

这将允许积极和消极的整数

ValidationExpression = “^ – ?[0-9] \ d *(\ d +)$”

我有一些关于Django的正则expression式的实验,这需要从负数到正数

 ^(?P<pid>(\-\d+|\d+))$ 

让我们把注意力集中在这个(\-\d+|\d+)部分而忽略别人,这个分号| 意思是在正则expression式中的OR ,那么负值将与这个\-\d+部分匹配,正值到这个\d+

只需添加一个0或1个标记:

 ^-?[0-9]\d*(.\d+)?$ 

对于负数只,这是完美的。

 ^-\d*\.?\d+$