Hmm, actually, I think I meant to make the regex be /^-?(?=\d|\.\d)\d*\.?\d+$/. Yes, that looks far more sane. The other could have matched "1234.", which isn't proper. This one can match "1234", ".1234", and "12.34".
I hate to say this, but sometimes I actually need to use
numbers like "300." This is sometimes used to denote the
difference between 3*10^2 and 3.00*10^2. The latter has
three significant digits, while the former has only one.
But don't fix your regex on my account; I'm sure that
my situation is in the minority...