如何通过此正则表达式匹配负数?这个正则表达式可以很好地使用正值,但是我希望它也允许负值,例如-10,-125.5等。
^[0-9]\d*(\.\d+)?$
谢谢
如何通过此正则表达式匹配负数?这个正则表达式可以很好地使用正值,但是我希望它也允许负值,例如-10,-125.5等。
^[0-9]\d*(\.\d+)?$
谢谢
Answers:
您应该在开头添加一个可选的连字符,方法是添加-?
(?
是一个表示一个或零次出现的量词):
^-?[0-9]\d*(\.\d+)?$
我用以下值在Rubular中验证了它:
10.00
-10.00
两者均符合预期。
^-?[0-9]\d*(\.\d+)?$
^[-+]?[0-9]\d*(\.\d+)?$
一些正则表达式示例:
正整数:
^\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}$
日期(年月日,年/月/日等):
^([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+)?$
应该工作
UPDATED(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
-*
为,-?
因为它匹配-------------
。
仅当后跟数字时,才允许使用-
或+
字符:
^([+-](?=\.?\d))?(\d+)?(\.\d+)?$
这将允许正整数和负整数
ValidationExpression =“ ^-?[0-9] \ d *(\ d +)?$”
我在Django URL中有一些关于正则表达式的实验,要求从负数到正数
^(?P<pid>(\-\d+|\d+))$
让我们专注于这一(\-\d+|\d+)
部分,而忽略其他部分,此分号|
表示正则表达式中的OR,则负值将与此\-\d+
部分匹配,正值将与该部分匹配\d+
仅对于负数,这是完美的。
^-\d*\.?\d+$
^[+-]?\d{1,18}(\.\d{1,2})?$
接受正或负十进制值。