Re: regex question
| From: | Martin Norland | Date: | Mon, 07 Mar 2005 17:14:44 +0000 |
| Subject: | Re: regex question | ||
| References: | 1 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-38799@lists.php.net to get a copy of this message | ||
Chip Wiegand wrote:
I am writing some regex on a php form to validate input and have come up with this, for example - if (empty($first) || !eregi("^[A-Za-z]+[- ]?[A-Za-z]+$", $first)) for checking a persons name. This allows a single name, or a hyphenated double name, or a non-hyphenated double name, and it works. My question is this - why is the third set followed by a '+' optional? I thought the + meant the preceding group is present 1 or more times. The ? means the preceding group is present 0 or more times. Why is it that when I put a ? in the place of the + after the last ] if (empty($first) || !eregi("^[A-Za-z]+[- ]?[A-Za-z]?$", $first)) the regex is broken?The ? doesn't mean 0 or more, it means 'optional' - 0 or 1 times. without specific examples on what works or what breaks, I can't explain it much better than this - but rest assured, that's your problem. now I'm sitting here wondering if ?* and ?+ are interchangeable, and thinking so. Cheers, -- - Martin Norland, Sys Admin / Database / Web Developer, International Outreach x3257 The opinion(s) contained within this email do not necessarily represent those of St. Jude Children's Research Hospital.