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.
S
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.
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