Jon*_*nas 8 java validation number-formatting
我正在验证表单中的用户输入.
我解析输入NumberFormat,但它是邪恶的,几乎允许任何东西.有没有办法解析数字更严格?
例如,我想不允许这三个输入,一个整数,但Numberformat允许所有这些:
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());
Run Code Online (Sandbox Code Playgroud)
也许这有助于:
String value = "number_to_be_parsed".trim();
NumberFormat formatter = NumberFormat.getNumberInstance();
ParsePosition pos = new ParsePosition(0);
Number parsed = formatter.parse(value, pos);
if (pos.getIndex() != value.length() || pos.getErrorIndex() != -1) {
throw new RuntimeException("my error description");
}
Run Code Online (Sandbox Code Playgroud)
(感谢mynetgear.net上严格的数字解析)