[0-9]+\.[0-9]*([eE][+-]?[0-9]+)?
[[:digit:]]+\.[[:digit:]]*([eE][+-]?[[:digit:]]+)?
Problem: numbers like "3." are acepted, but not ".3".
(([[:digit:]]+\.[[:digit:]]*)|(\.[[:digit:]]+))([eE][+-]?[[:digit:]]+)?