nnn或nnn.nnn的正则表达式

时间:2016-08-16 08:17:41

标签: regex

我有这个正则表达式

"^([0-9]{1,3})+(\.[0-9]{3})?$" 

它应该只允许n,nn,nnn和nnn.nnn格式的数字。

在我的情况下,它也传递了这种格式nnnnn.nnn

3 个答案:

答案 0 :(得分:3)

您应该删除+和多余的括号:

^[0-9]{1,3}(\.[0-9]{3})?$
 ^^^^^^^^^^

您的模式匹配字符串的开头(^),1到3位(带([0-9]{1,3})+)的1个或多个匹配项以及带有3个数字的点的可选序列({{1 }})在字符串的末尾((\.[0-9]{3})?)。

$只会匹配1到3位数。

请参阅regex demo

答案 1 :(得分:0)

发生这种情况的原因是因为你的正则表达式中间有+

这意味着"一个或多个前面的元素",因此它实际上意味着1 one more ([0-9]{1,3}) and it must end with ([0-9]{3})?$

答案 2 :(得分:0)

您需要从表达式中删除1:^([0-9]{3})+(\.[0-9]{3})?$