String reg = "^[+-\\-]?((0(\\.[0-9]{1,2}))|([1-9][0-9]{0,3}(\\.[0-9]{1,2})?))$";
System.out.println("+0".matches(reg));
System.out.println("-0".matches(reg));
System.out.println("0".matches(reg));
System.out.println("+123".matches(reg));
System.out.println("+023".matches(reg));
System.out.println("-123".matches(reg));
System.out.println("123".matches(reg));
System.out.println("+123.12".matches(reg));
System.out.println("+123.123".matches(reg));
System.out.println("+123.00".matches(reg));
System.out.println("+1235.00".matches(reg));
System.out.println("+1235.01".matches(reg));
System.out.println("+12376.00".matches(reg));
System.out.println("+12376.20".matches(reg));
false
false
false
true
false
true
false
true
false
true
true
true
false
false