我,我正在做一个模式正则表达式,以检查String是否为:
像这样的<.d> digit.digit.digit:1.1.1
0.20.2
58.55541.5221
在java中我使用:
private static Pattern pattern = Pattern.compile("\\d*.\\d*.\\d*", Pattern.CASE_INSENSITIVE);
但如果我通过 20.20。在比赛中给我回报。
什么是格德?
答案 0 :(得分:7)
您应该使用+
代替*
。 *
重复次数为0次或更多次,而+
次重复次数为1次或以上。
此外,不要忘记转义.
字符:
"\\d+\\.\\d+\\.\\d+"
答案 1 :(得分:6)
您使用了*
量词。匹配0 or more repetition
。
使用与+
匹配的1 or more repetition
量词: -
Pattern.compile("\\d+\\.\\d+\\.\\d+");
此外,您需要转义dot(.)
Regex
,因为它在.
中具有特殊含义,与任何字符匹配。因此,正则表达式中的.
不仅匹配{{1}},而且实际上会匹配任何字符。
答案 2 :(得分:2)
答案 3 :(得分:2)
zzzzBov建议是正确的,你还需要转义.
,所以正确的正则表达式将是
\\d+\\.\\d+\\.\\d+
答案 4 :(得分:0)
这是你需要的基本正则表达式
\d+\.\d+(\.\d+)?
这将匹配以下
20.20.20
1.1.1
1.1.1
0.20.2
58.55541.5221
20.20