我有这个正则表达式
"^([0-9]{1,3})+(\.[0-9]{3})?$"
它应该只允许n,nn,nnn和nnn.nnn格式的数字。
在我的情况下,它也传递了这种格式nnnnn.nnn
答案 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})?$