Asnexplore
Asnexplore

Reputation: 363

regular expression for valid 2 digit decimal number

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

Answers (2)

ChristopheBrun
ChristopheBrun

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

Bart Friederichs
Bart Friederichs

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

Related Questions