^[-]?[0-9]+(\\.[0-9]{1,2})?$^字符串头[-]?最多一个负号[0-9]+至少一个数字(\\.[0-9]{1,2})?如果有小数点,那么小数点后面最少1位最多2位$字符串结尾该正则有两个BUG:如果匹配123.0这样的小数也会正确如果匹配0123.45这样的也会正确不是要求特别严格的话应该没有影响。楼下的^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$同样有上述2个BUG,并且没有限制小数点后最多2位,将后两个+改成{1,2}就可以限制为小数点后两位了,同理如果你不需要限制小数点后面的个数,将{1,2}改成+就可以。
public static boolean isNum(String str){ return str.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$"); }调用就好了