I’m validating user input from a form.
I parse the input with NumberFormat, but it is evil and allow almost anything. Is there any way to parse number more strict?
E.g. I would like to not allow these three inputs, for an integer, but Numberformat allow all of them:
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setParseIntegerOnly(true);
Number numberA = nf.parse("99.731"); // 99 (not what the user expect)
Number numberB = nf.parse("99s.231"); // 99 (invalid)
Number numberC = nf.parse("9g9"); // 9 (invalid)
System.out.println(numberA.toString());
System.out.println(numberB.toString());
System.out.println(numberC.toString());
Maybe this helps:
(Thanks to Strict number parsing at mynetgear.net)