我正在尝试检查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
答案 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