我正在做一个模式正则表达式,用于检查字符串是否为:
类似这样的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。在比赛中返回true。
什么是grond?
发布于 2012-11-14 00:41:26
您应该使用+而不是*。*是0或更多重复,而+是1或更多重复。
此外,不要忘记对.字符进行转义:
"\\d+\\.\\d+\\.\\d+"发布于 2012-11-14 00:41:53
您已经使用了*量词。与0 or more repetition相匹配。
使用与1 or more repetition匹配的+量词:-
Pattern.compile("\\d+\\.\\d+\\.\\d+");此外,您需要转义您的dot(.),因为它在Regex中具有特殊含义,可以匹配任何字符。因此,正则表达式中的.不仅匹配.,它实际上还会匹配任何字符。
发布于 2012-11-14 00:42:11
你必须避开那个圆点!它可以匹配任何字符,请参见Documentation。
所以你需要
Pattern.compile("\\d+\\.\\d+\\.\\d+");我还用+替换了*,因为*也会计算0位数。
https://stackoverflow.com/questions/13364812
复制相似问题