@Kelly S. French, это регулярное выражение соответствует всем вашим тестовым случаям.
^[+-]?(\d+\.\d+|\d+\.|\.\d+|\d+)([eE][+-]?\d+)?$
Источник: perldoc perlretut