#!/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;