my $is_number = qr/^
[+-]? # optional sign
( # then:
\d{1,3}(\,\d\d\d)+(\.(\d+)?)? # n,nnn.nn
|\d+\.\d+ # n.n
|\d+\. # n.
|\.\d+ # .n
|\d+ # n
)
([eE][+-]?\d+)? # optional exponent
$/xo;
####
#!/usr/bin/perl
use strict;
use warnings;
my $regex = qr/^[+-]?(\d{1,3}(\,\d\d\d)+(\.(\d+)?)?|\d+\.\d+|\d+\.|\.\d+|\d+)([eE][+-]?\d+)?$/o;
my @data = (-123.004,-.008,0,-0,.0987,1.0,12345,'d','test');
foreach (@data) {
if ($_ =~ /$regex/) {
print "$_: true\n";
} else {
print "$_: false\n";
}
}
exit;
####
-123.004: true
-0.008: true
0: true
0: true
0.0987: true
1: true
12345: true
d: false
test: false