数字正则
数字正则
原文链接:
[正则表达式 整数](http://www.cnblogs.com/freexiaoyu/archive/2008/12/17/1356690.html)
内容摘自原文和评论
正则
^[1-9]\d*$ //匹配正整数
^[1-9]\\d*|0$ //匹配整数(推荐) -0,0123 不通过
^[1-9]\d*|0$ //非负整数
^-[1-9]\d*|0$ //匹配非正整数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)
测试代码
@Test
public void test0(){
// ^[1-9]\d*$ 匹配正整数
System.out.println(Pattern.matches("^[1-9]\\d*$", "898"));//true
// ^-?[0-9]\d*$ 匹配整数 -0,0123 都算通过
System.out.println(Pattern.matches("^-?[0-9]\\d*$", "-0"));//true
// ^[1-9]\\d*|0$ 匹配整数(推荐) -0,0123 不通过
System.out.println(Pattern.matches("^(-?[1-9]\\d*|0)$", "0123"));//false
// ^[1-9]\d*|0$ 非负整数
System.out.println(Pattern.matches("^[1-9]\\d*|0$", "46"));//true
// ^-[1-9]\d*|0$ 匹配非正整数
System.out.println(Pattern.matches("^-[1-9]\\d*|0$", "1000.01"));//false
// ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
System.out.println(Pattern.matches("^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$", "1000.01"));//true
// ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
System.out.println(Pattern.matches("^-([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*)$", "1000.01"));//false
// ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数
System.out.println(Pattern.matches("^-?([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0)$", "000.01"));//false
// ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数 + 0)
System.out.println(Pattern.matches("^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0$", "0"));//true
// ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)
System.out.println(Pattern.matches("^(-([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*))|0?\\.0+|0$", "0.000"));//true
}