go ahead... be a heretic | |
PerlMonks |
Re: Re: Re: Re: Validating Numbers in CGI Script?by lestrrat (Deacon) |
on May 10, 2001 at 21:50 UTC ( [id://79503]=note: print w/replies, xml ) | Need Help?? |
Well, let's take this guy apart. We know how the leading -? will be treated, so let's leave it out. Then we get two paths that this regex can follow: (?=\d)\d*\.?\d+$ and (?=\.\d)\d*\.?\d+$ If the regex takes the first path, we're guaranteed to get at least one digit. This digit must be present in the \d* or \d+ if it goes to the \d*, then we're guaranteed to match the equivalent of \d+\.?\d+ which will match anything that's comprised of just numbers, and any two numbers with a single period between them. if it's in the \d+, then we know that there are no periods in the string, since we must have passed through the optional \d* and \.? so this first path will always match a number number with no fractional portion, or a fractional number with a mandatory leading whole number portion Now in the other path: (?=\.\d)\d*\.?\d+$ If this regex matches, we're guaranteed to have a period then a number. Since this is a lookahead, that means we've seen past the following \d*, since we can't possibly have picked up a number prior to the period. So the actual regex in this path is \.\d+, which clearly just matches a number with no preceding 0. So in any case, I don't think it will match anything other than numbers, as japhy suggests.
In Section
Seekers of Perl Wisdom
|
|