目前有一個需求是根據一個字符串,判斷該字符串是否是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());
}