Thanks, thats hit the nail on the head, and my headache is a whole lot better!
Steve

Cc Zona wrote:

> In article <[EMAIL PROTECTED]>,
>  [EMAIL PROTECTED] (Steve Fitzgerald) wrote:
>
> > I have been struggling for a couple of hours now trying to write a
> > preg_match expression to validate a dollar amount - the user may or may
> > not put in the decimals so I want to allow only digits plus a possible
> > period followed by two more digits. My eyes are now swimming and I just
> > can't seem to get right. This is what I have at the moment:
> >
> > if (!preg_match("/[\d]+([\.]{1}[\d]{2})?/", $form_data[amount])) //
> > wrong amount
> >
> > but it still allows invalid input. Can anyone help or is there a better
> > way to do it?
>
> It sounds like you need an exact match; note that your regex is matching
> against substrings, thus additional invalid characters are allowed to pass.
> Anchor the pattern, so that it essentially says "From beginning to end, the
> only chars allowed are one or more digits, optionally followed by the
> combination of a period then two more digits."  (The "^" and "$" special
> chars are anchors.)
>
> A regex special character loses it "specialness" when it's either escaped
> with a backslash, or included within a square-bracketed character class;
> you don't need to do both.
>
> The {1} is implied; you don't need it.
>
> if (preg_match("/^\d+(\.\d{2})?$/", $form_data[amount]))
>    {echo "Validated!";}
> else
>   {exit("That's not a dollar amount.");}
>
> --
> CC


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to