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