ОК, вы хотите найти целое число не начиная с 0, а найти десятичное число? Ваш код: /(^$)|(^[0-9]+(\.([0-9]{1})?)?$)/
Случай 1: целое число [1-9]\d*
Случай 2: десятичное число
//match 5.0
patt = \d+\.\d+
//Match 5.1xxxx, 5.2xxx, etc.
patt = \d+\.[1-9]\d*
//match 5.0xxx
patt = \d+\.0\d+
//combine all of them
patt = ([1-9]\d*|\d+\.[1-9]\d*|\d+\.0\d+)
//Final
patt = /(^$)|(([1-9]\d*|\d+\.[1-9]\d*|\d+\.0\d+)?$)/
Я объясню некоторую схему выше:
\d == [0-9] //match 1 character between 0 and 9
\d* == \d{0,} //match 0 or more character
\d+ == \d{1,} //match at least one character