我正在尝试找一个验证数字大于或小于0的正则表达式。
它必须允许一个数字为1.20,-2,0.0000001等...它根本不能为0且它必须是数字,也意味着它不能是0.00,0.0
^(?=.*[1-9])(?:[1-9]\d*\.?|0?\.)\d*$
尝试过,但它不允许否定
答案 0 :(得分:8)
我不认为正则表达式是解决该问题的合适工具。
为什么不使用简单的条件?
long number = ...;
if (number != 0)
{
// ...
}
为什么用火箭筒杀死苍蝇?
答案 1 :(得分:1)
答案 2 :(得分:1)
答案 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*)
然后决定是否仍然要使用正则表达式。