Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

regular expression for valid 2 digit decimal number

Tags:

regex

php

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

like image 651
Asnexplore Avatar asked May 16 '13 12:05

Asnexplore


2 Answers

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

like image 66
Bart Friederichs Avatar answered Sep 21 '22 16:09

Bart Friederichs


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.

like image 40
ChristopheBrun Avatar answered Sep 25 '22 16:09

ChristopheBrun