首页 > 解决方案 > 小数点后最多 2 位的正则表达式

问题描述

我想编写一个正则表达式,它必须只取小数点后 0、1 或 2 位数字的有效数值。

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

有什么想法有什么问题吗?

标签: regex

解决方案


您的正则表达式^\d+(\.\d){0,2}$匹配1,或者1.01.0.0因为您为组指定了 0-2 次的量词,(\.\d){0,2}并且不匹配点后的 3 位数字。

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

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

这里第一个数字之后的组是可选(?:\.\d{1,2})?的,并且为 digit 指定量词\d{1,2}


推荐阅读