Reputation: 363
I want to have a validation in php for price which can be 100 or 100.45 The 2 decimal places will be optional.
Now the validation should allow only digits.
So far i managed to achieve it
if (!preg_match('/^[0-9]+(\.[0-9]{1,2})?/', "100"))
{
echo "Invalid";
}
else
{
echo "Valid";
}
but the issue here is that it is showing valid even if i enter 100a.00 or 100a or 100.a00
Please help me in fixing it so that only digits are allowed i.e 100 or 100.00 format
Upvotes: 8
Views: 19691
Reputation: 1207
Lacks a $ in your regex. Presently, the first 3 characters in '100a...' match your regex.
preg_match('/^[0-9]+(\.[0-9]{1,2})?$/', "100")
should do the trick.
Upvotes: 7
Reputation: 33511
Try this:
if (!preg_match('/^[0-9]+(\.[0-9]{1,2})?$/', "100"))
The $
denotes the "end of a string": http://www.php.net/manual/en/regexp.reference.meta.php
Upvotes: 21