最近用到了java正则验证数字需求,上网查了一些,有的对有的不完善,自己根据示例,进行了修改,自己将不断地补充修改这里的方法,希望大家一起探讨。

public static boolean isNumber(String number) {
boolean isNumber = false;
int index = number.indexOf(",");
if (index >= 0) {
//有逗号等分隔符的数字
isNumber = number
.matches("[+-]?[1-9]+[0-9]*(,[0-9]{3})+(\\.[0-9]+)?");
} else {
isNumber = number.matches("[+-]?[1-9]+[0-9]*(\\.[0-9]+)?");
}
return isNumber;
}

1、整数

"^([1-9]\d*)|(0)$"

2、2011-10-10更新

//之前自己的:
"[+-]?(([1-9]+[0-9]*(\\.[0-9]+)?)|(0)|(0\\.[0-9]+))"
//优化后的:
"[+-]?((0|([1-9]+[0-9]*))(\\.[0-9]+)?)"