正则表达式只接受2个地方

大家好我需要所有这些可能的情况才有效

123 123.1 123.12 

我试过这个^[0-9]*\.[0-9]{2}$ or ^[0-9]*\.[0-9][0-9]$但不起作用可以任何一个帮助我出去

试试这个:

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

基于您的第二个示例,但允许一个或两个小数位,并使整个小数部分可选。

[编辑]

OP已经改变了问题的标准 – 见下面的评论。 他现在想要小数点前的数字只允许最多六位数,并要求我编辑适合的答案。

所需要的只是用{0,6}替换* (对于任意数量的数字)(对于0到6位数字)。 如果你想要至少一个数字,那么它将是{1,6}

这是修改后的正则表达式:

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

试试……

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

*按照建议编辑 ,使其无法捕获。

几乎搞定了……

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

您可能还需要担心以点开头的数字,将没有任何数字的点视为无效,并拒绝空数字:

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

这接受1.1但拒绝.1. 。和(空号)。

根据您的所有要求尝试此操作

  ^(\d{0,6})(\.\d{1,2})?$