Regex 我需要一个价格的正则表达式,它必须有一个正数,然后是两位小数。然而,它不能是零美元

Regex 我需要一个价格的正则表达式,它必须有一个正数,然后是两位小数。然而,它不能是零美元,regex,Regex,我需要一个价格的正则表达式,它必须有一个正数,然后是两位小数。但是,它不能是零美元,例如0.00是错误的 if(preg_match("~^[0-9]+\.[0-9]{2}$~",$userPrice)) 这应该适合您: ^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*$ 试试这个^[0-9]*[1-9]+\[0-9]{2}$这个应该可以: $userPrice = "0.00"; if (!preg_match('/0\.00/im', $userPrice))

我需要一个价格的正则表达式,它必须有一个正数,然后是两位小数。但是,它不能是零美元,例如0.00是错误的

 if(preg_match("~^[0-9]+\.[0-9]{2}$~",$userPrice))

这应该适合您:

^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*$
试试这个^[0-9]*[1-9]+\[0-9]{2}$

这个应该可以:

$userPrice = "0.00";

if (!preg_match('/0\.00/im', $userPrice)) {
    if (preg_match('/^[0-9]+\.[0-9]{2}$/i', $userPrice)){

        echo "valid price";
    }
}else{
    echo "Invalid Price";
}
这应该起作用:

^[1-9][0-9]*\.[0-9]{2}$|^0\.(?:[0-9][1-9]|[1-9][0-9])$

您可以通过以下完整的正则表达式方式使其有效:

\A(?:[1-9][0-9]*(?:\.[0-9]{2})?|0\.(?:[1-9][0-9]|0[1-9]))\z
如果十进制数字不是可选的:

\A(?:[1-9][0-9]*\.[0-9]{2}|0\.(?:[1-9][0-9]|0[1-9]))\z

另一种可能的方法包括使用is_float和测试变量是否不等于零。但是,这种方法不会检查格式。

您使用的是哪种语言?可以是0.01吗?对不起,我正在使用PHP。是的,它可以是0.01,但不能是0.00。我已经更新了我的答案。为了简单起见,首先您需要检查价格是否为0.00,然后检查它是否为有效价格2位小数
\A(?:[1-9][0-9]*\.[0-9]{2}|0\.(?:[1-9][0-9]|0[1-9]))\z