我需要一个正则表达式来验证正面或负面双重。我尝试了以下正则表达式:
^[-+]?\\d+(\\.{0,1}(\\d+?))?$
但它允许前导0(例如01和00)。我如何修改我的正则表达式,以便它不允许前导0?
答案 0 :(得分:4)
这是一个例子(.NET语法,在Java中也应该没问题):
^[+-]?(([1-9]\d*)|0)(\.\d+)?
基本上,它有一个可选的+或 - 符号后跟0或1到9之间的数字,后跟任意数字的数字。可选地,它可以包含小数点后跟一个或多个数字。
关于这个正则表达式的重要之处(这就是解决你的问题)是因为它有一个额外的限制,即多位数字不能以0开头 - 你可以拥有等于的东西< / em> 0,但你不能有像000010.1或0000.0这样的东西。像0或0.0或100.1这样的东西就可以了。
答案 1 :(得分:1)
如果您需要,可以使用另一种方法来处理指数:
^[+-]?([1-9][0-9]*|0)(\.[0-9]+)?((e|E)[+-]?[0-9]+)?$
我刚才意识到,它与指数加法基本上与@EJoshuaS'相同。
这是验证它的链接: