我匹配十进制数的正则表达式匹配“1”。我该如何解决?

时间:2011-02-18 00:06:28

标签: regex

我得到了小数的正则表达式:

/^(\d{1,3})(\.{0,1}\d{0,2})$/

但它允许“1”。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:5)

以下正则表达式匹配1-3位数字,可选地后跟小数点和1-2位数字。

/^(\d{1,3})(\.\d{1,2})?$/

请注意,我还将您的.更改为\.。它是一个匹配任何东西的元字符,所以它必须被转义。

答案 1 :(得分:1)

/^(\d{1,3})(\.\d{1,2})?$/

我假设你试图在0到999.99之间匹配,小数为0,1或2。如果没有小数,则不需要句点分隔符。如果是这种情况,您需要上述内容。

答案 2 :(得分:0)

对于它的价值,如果您不想在数字的开头强制使用0,则可以使用以下表达式:

(\d*\.)?\d+

这将匹配:

1
.1
1.1

这不匹配:

1.
.

通过一些修改,此表达式仍可用于强制使用一定数量的数字:

(\d{1,3}\.)?\d{1,2}