#!/usr/bin/perl -w use strict; my @good = qw( 0e0 0 +0 -0 1. 0.14 .14 1.24e5 24e5 -24e-5); my @bad = ('', qw(. +. 1e e1 2.3. 2.3.4 1..2 .1.1 e.1 e1.1 .1a 1.a 1.1a 1a.1 1.a1)); my $pat = qr/^[+-]?(?=\.?\d)\d*\.?\d*(?:[eE][+-]?\d+)?$/; print "GOOD Tests (Should match.)\n"; print /$pat/ ? ' ': 'no ', "match: '$_'\n" for @good; print "\nBAD Tests (Should not match.)\n"; print /$pat/ ? ' ': 'no ', "match: '$_'\n" for @bad;