目前有一个需求是根据一个字符串,判断该字符串是否是double类型数字,在网上找了很久,找了很多方案都发现不能完整判断,我是需要先通过正则判断,再利用new BigDecimal(str);来转成数字的,为了不出错,需要之前判断一下该字符串是否是数字。后来就自己写了一个出来,作为记录,也为了防止出错,放在这里,让大家校验一下。如果有错,请留言。
private final static Pattern NUMBER_PATTERN = Pattern.compile("([+\-]?[0-9]+[.]?[\d]*)");
/**
* 判断是不是数字
**/
@Test
public void testNum() {
Assert.assertTrue(NUMBER_PATTERN.matcher("-090").matches());
Assert.assertTrue(!NUMBER_PATTERN.matcher("0.9.0").matches());
Assert.assertTrue(NUMBER_PATTERN.matcher("09.0").matches());
Assert.assertTrue(NUMBER_PATTERN.matcher("2343249.234324").matches());
Assert.assertTrue(NUMBER_PATTERN.matcher("-2343249.234324").matches());
Assert.assertTrue(!NUMBER_PATTERN.matcher("--2343249.234324").matches());
Assert.assertTrue(NUMBER_PATTERN.matcher("1090").matches());
Assert.assertTrue(NUMBER_PATTERN.matcher("-090").matches());
Assert.assertTrue(!NUMBER_PATTERN.matcher("0-a90").matches());
Assert.assertTrue(!NUMBER_PATTERN.matcher("09a0").matches());
Assert.assertTrue(!NUMBER_PATTERN.matcher("09-0").matches());
}