有效2位十进制数的正则表达式

时间:2013-05-16 12:56:39

标签: php regex

我想在php中验证价格可以是100或100.45 小数点后2位是可选的。

现在验证应该只允许数字。

到目前为止,我设法实现了它

if (!preg_match('/^[0-9]+(\.[0-9]{1,2})?/', "100"))
{
    echo "Invalid";
}
else
{
    echo "Valid";
}

但问题是,即使我输入100a.00或100a或100.a00,它也显示有效

请帮我修复它,以便只允许数字,即100或100.00格式

2 个答案:

答案 0 :(得分:19)

试试这个:

if (!preg_match('/^[0-9]+(\.[0-9]{1,2})?$/', "100"))

$表示“字符串结尾”:http://www.php.net/manual/en/regexp.reference.meta.php

答案 1 :(得分:4)

你的正则表达式缺少一个$。 目前,“100a ...”中的前3个字符与正则表达式相匹配。

preg_match('/^[0-9]+(\.[0-9]{1,2})?$/', "100")

应该做的伎俩。