digit.digit.digit的模式表达式?

时间:2012-11-13 16:40:17

标签: java regex

我,我正在做一个模式正则表达式,以检查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。在比赛中给我回报。

什么是格德?

5 个答案:

答案 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)

你必须逃避点!它匹配任何角色,请参阅Documentation

所以你需要

Pattern.compile("\\d+\\.\\d+\\.\\d+");

我还将*替换为+,因为*也会数学0位数。

答案 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