Beefy Boxes and Bandwidth Generously Provided by pair Networks
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??


in reply to Re: Re: Re: Validating Numbers in CGI Script?
in thread Validating Numbers in CGI Script?

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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://79503]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (None)
    As of 2024-04-25 01:05 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      No recent polls found