Java中的正则表达式正负双精度

psi*_*los 1 java regex validation

我需要一个正则表达式来验证正负双精度。我尝试了以下正则表达式:

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

但它允许前导0(例如01和00)。如何修改正则表达式,使其不允许前导0?

EJo*_*ica 5

这是一个示例(.NET语法,在Java中也应该可以):

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

基本上,它有一个可选的+或-符号,后跟0或1-9之间的数字,后跟任意数量的数字。(可选)它可以包含一个小数点,后跟一个或多个数字。

此正则表达式的重要一点(这就是解决您的问题的原因),它具有附加的限制,即多位数字不能以0开头-您可以输入正好等于0的值,但不能输入等于0的值例如000010.1或0000.0等。像0或0.0或100.1之类的东西就可以了。