正则表达式小于或大于0

时间:2013-05-21 17:42:27

标签: regex

我正在尝试找一个验证数字大于或小于0的正则表达式。

它必须允许一个数字为1.20,-2,0.0000001等...它根本不能为0且它必须是数字,也意味着它不能是0.00,0.0

^(?=.*[1-9])(?:[1-9]\d*\.?|0?\.)\d*$

尝试过,但它不允许否定

5 个答案:

答案 0 :(得分:8)

我不认为正则表达式是解决该问题的合适工具。

为什么不使用简单的条件?

long number = ...;

if (number != 0)
{
    // ...
}

为什么用火箭筒杀死苍蝇?

答案 1 :(得分:1)

刚试了一下:

[+-]?(?:\d*[1-9]\d*(?:\.\d+)?|0+\.\d*[1-9]\d*)

Online demo

答案 2 :(得分:1)

还尝试了一些事情:

-?[0-9]*([1-9][0-9]*(\.[0-9]*)?|\.[0-9]*[1-9][0-9]*)

演示:http://regex101.com/r/bZ8fE5

答案 3 :(得分:0)

尝试否定像这样的正则表达式

!^[0\.]+$

如果您觉得需要使用正则表达式只是因为它存储为String,您可以使用Double.parseDouble()将字符串转换为数字类型。这样可以检查字符串是否为有效数字(通过捕获NumberFormatException)。

答案 4 :(得分:0)

对一个数字采用典型的正则表达式,比如说

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

然后要求在小数之前或之后有一个非零数字。根据您的示例,您不希望小数点前的前导零,因此一个简单的正则表达式可能

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

然后决定是否仍然要使用正则表达式。