匹配浮点数或整数

时间:2015-10-09 13:12:40

标签: java regex

我正在尝试检查String是否符合要求。 现在我有这样的事情:

String aaa = "322.155";
boolean match = aaa.matches("\\d{3}\\.\\d{3}"); //matches
String aaa = "32.155";
boolean match = aaa.matches("\\d{3}\\.\\d{3}"); //don't match

我想要的是制作所有这些数字

1
2
999
22.22
333.23
1.012

匹配模式。 我应该使用什么模式?

boolean match = aaa.matches("\\d{1-3}\\.\\d{1-3}"); //isn't correct

3 个答案:

答案 0 :(得分:1)

只需使用非特定量词:

"\\d+?\\.?\\d*"

这将匹配任何1+位,后跟一个点,后跟任意0+位。

<强>测试

String[] test = {"1", "10", "1.1", "100.1000", "......................1", "0..2"};
for (String s: test) {
    System.out.println(s.matches("\\d+?\\.*\\d*"));
}

<强>输出

true
true
true
true
false
false

注意

由于要求不太清楚,如果您需要限制在分隔符之前或之后匹配的位数,您可以使用hotzst所解释的{min,max}量词惯用法,而不是一般量词的。

答案 1 :(得分:1)

由于.不是强制性的

\\d+\\.?\\d+

答案 2 :(得分:1)

另一种可能性:

"\\d{1,3}(\\.\\d{1,3})?"

匹配一到三位数字,可选地,一个十进制数字与另外一到三个尾随数字匹配。

1        matches
2        matches
999      matches
22.22    matches
333.23   matches
1.012    matches
.123     does not match
1234     does not match
123.1234 does not match
1..2     does not match