我,我正在做一个模式正则表达式来检查一个字符串是否是:
像这样的数字.数字.数字:
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 次或多次重复,而+
是 1 次或多次重复。
此外,不要忘记转义.
字符:
"\\d+\\.\\d+\\.\\d+"
您使用了*
量词。匹配0 or more repetition
。
使用+
量词,它匹配1 or more repetition
: -
Pattern.compile("\\d+\\.\\d+\\.\\d+");
此外,您需要转义您的dot(.)
,因为它在 中具有特殊含义Regex
,它匹配任何字符。所以,.
在你的正则表达式中,不仅是匹配.
,它实际上会匹配任何字符。
zzzzBov 的建议是正确的,你还需要转义.
,所以正确的正则表达式是
\\d+\\.\\d+\\.\\d+
这是您需要的基本正则表达式
\d+\.\d+(\.\d+)?
这将匹配以下内容
20.20.20
1.1.1
1.1.1
0.20.2
58.55541.5221
20.20