7

我想在 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 格式

4

2 回答 2

21

尝试这个:

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

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

于 2013-05-16T12:59:24.630 回答
6

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

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

应该做的伎俩。

于 2013-05-16T13:00:14.347 回答