正则表达式,小数点后最多2位数

时间:2018-05-25 07:48:06

标签: regex

我想写一个正则表达式,必须使用有效的小数点后面的0,1或2位数字。

所以我尝试这样做:"^\\d+(\\.\\d){0,2}$"但即使对于小数点后3位数的数字它也会返回true。

任何想法有什么不对?

2 个答案:

答案 0 :(得分:1)

你的正则表达式是说“有些数字,然后是0-2出现一个点后跟一个数字”。发现错误? 3.1.4会匹配,但3.14不会。与您在问题中陈述的内容相反,该点之后的3位数也不匹配。

相反,你需要这样的东西,假设小数部分应该是可选的:

\d+(\.\d{0,2})?

或者,使用您选择的语言锚定和转义字符串:

"^\\d+(\\.\\d{0,2})$"

答案 1 :(得分:1)

您的正则表达式^\d+(\.\d){0,2}$匹配11.0,还有1.0.0,因为您为组(\.\d){0,2}指定了0-2倍的量词,但不会在点之后匹配3位数。

要匹配一个数字,该数字后跟一个点和1或2位数后的数字,你可以使用:

^\d+(?:\.\d{1,2})?$

此处,第一个数字后面的组是可选的(?:\.\d{1,2})?,并且为数字\d{1,2}指定了量词。