десятичный разделитель является точкой, сопровождаемой макс. одной цифрой! Никакой диапазон не указан.
Спасибо, ребята!
^-?\d+(\.\d)?$
если десятичная часть необязательна, и
^-?\d+\.\d$
если обязательна :)
Вряд ли уместно в данном случае, но не забывайте, что "." не универсален в качестве десятичного разделителя. Многие европейские страны используют ",", поэтому вы можете предпочесть тот, который используется, из локали:
DecimalFormat df = (DecimalFormat) NumberFormat.getInstance();
String separator = df.getDecimalFormatSymbols().getDecimalSeparator();
(См. Также: http://java.sun.com/j2se/1.5.0/docs/api /java/text/DecimalFormatSymbols.html#getDecimalSeparator)