我正在尝试找到一个验证数字大于或小于 0 的正则表达式。
它必须允许一个数字为 1.20、-2、0.0000001 等......它根本不能是 0,它必须是一个数字,也意味着它不能是 0.00、0.0
^(?=.*[1-9])(?:[1-9]\d*\.?|0?\.)\d*$
试过了,但它不允许负面
我正在尝试找到一个验证数字大于或小于 0 的正则表达式。
它必须允许一个数字为 1.20、-2、0.0000001 等......它根本不能是 0,它必须是一个数字,也意味着它不能是 0.00、0.0
^(?=.*[1-9])(?:[1-9]\d*\.?|0?\.)\d*$
试过了,但它不允许负面
我不认为正则表达式是解决该问题的合适工具。
为什么不使用简单的条件?
long number = ...;
if (number != 0)
{
// ...
}
为什么要用火箭筒杀死苍蝇?
尝试像这样否定正则表达式
!^[0\.]+$
如果您觉得需要使用正则表达式只是因为它存储为字符串,您可以使用它Double.parseDouble()
来将字符串转换为数字类型。这将具有检查字符串是否为有效数字(通过捕获NumberFormatException
)的额外优势。
拿一个典型的正则表达式来表示一个数字,比如说
^[+-]?[0-9]*(\.[0-9]*)?$
然后要求在小数点之前或之后有一个非零数字。根据您的示例,您不希望小数点前有前导零,因此一个简单的正则表达式可能是
^([+-]?[1-9][0-9]*(\.[0-9]*)?)|([+-]?[0-9]*\.0*[1-9]*0*)
然后决定是否仍要为此使用正则表达式。