我想写一个正则表达式,必须使用有效的小数点后面的0,1或2位数字。
所以我尝试这样做:"^\\d+(\\.\\d){0,2}$"
但即使对于小数点后3位数的数字它也会返回true。
任何想法有什么不对?
答案 0 :(得分:1)
你的正则表达式是说“有些数字,然后是0-2出现一个点后跟一个数字”。发现错误? 3.1.4
会匹配,但3.14
不会。与您在问题中陈述的内容相反,该点之后的3位数也不匹配。
相反,你需要这样的东西,假设小数部分应该是可选的:
\d+(\.\d{0,2})?
或者,使用您选择的语言锚定和转义字符串:
"^\\d+(\\.\\d{0,2})$"
答案 1 :(得分:1)
您的正则表达式^\d+(\.\d){0,2}$
匹配1
或1.0
,还有1.0.0
,因为您为组(\.\d){0,2}
指定了0-2倍的量词,但不会在点之后匹配3位数。
要匹配一个数字,该数字后跟一个点和1或2位数后的数字,你可以使用:
此处,第一个数字后面的组是可选的(?:\.\d{1,2})?
,并且为数字\d{1,2}
指定了量词。