/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/
####
/^[+-]?(?:\d|\.\d)\d*(?:\.\d*)?(?:[Ee][+-]?\d+)?$/
##
##
#!/usr/bin/perl -wl
use strict;
my @nums = qw(
0e0
0
+0
-0
1.
0.14
.14
1.24e5
24e5
-24e-5
2.3.
2.3.4
1..2
);
for (@nums) {
# Print only if the match fails
# perlfaq4 regex
print "1: ", $_ if ! /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/;
# perlfaq4 regex modified
print "2: ", $_ if ! /^[+-]?(?:\d|\.\d)\d*(?:\.\d*)?(?:[Ee][+-]?\d+)?$/;
# perlfaq4 decimal regex extended to match floating point
print "3: ", $_ if ! /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)([Ee][+-]?\d+)?$/;
}