I'm right in the middle of
Mastering Regular
Expressions and he has lots of pretty pictures
of how to carve up the lexical domain of strings to
permit all and only the right types of numbers.
He has IPs, dates and times. Using regexes for these
things seems strange and error prone (eg. there was
recently a bug in FormBuilder's date regex).
Anyway, here's one the treats the digits as a number.
I don't think this is a good solution in this case, but
it does escape the lexical prison.
my $rx = qr/\A
(\d+) (?(?{ $1>=0 && $1<=55 }) | (?!)) \.
(\d+) (?(?{ $2>=0 && $2<=55 }) | (?!))
\z/x;