大家好,我希望以下所有情况都是合法的:
123
123.1
123.12
我尝试使用此代码 ^[0-9]*\.[0-9]{2}$ 或 ^[0-9]*\.[0-9][0-9]$
,但并不起作用。请问有谁能帮我解决这个问题?
试试这个:
^[0-9]*(\.[0-9]{1,2})?$
根据你的第二个示例,但允许一个或两个小数位,并使整个小数部分可选。
[编辑]
问题的标准已被提问者更改 - 请查看下面的评论。他现在希望小数点之前的数字仅允许最多六位数字,并要求我编辑答案以适应这一变化。
只需要用 {0,6}
(表示零到六个数字)替换 *
(表示任意数量的数字)。如果您想至少有一个数字,则应使用 {1,6}
。
以下是修改后的正则表达式:
^[0-9]{0,6}(\.[0-9]{1,2})?$
尝试...
^\d{1,6}(?:\.\d{1,2})?$
* Edited根据建议进行了修改,使其不捕获。
almost got it...
^[0-9]*(\.[0-9]{1,2})?$
123.
。 - Spudley你可能还需要担心以点号开头的数字,将没有任何数字的点号视为无效,并拒绝空数字:
^(?:\d+|\d*\.\d{1,2})$
这个程序接受 1
,.1
,1.0
但是拒绝 .
,1.
和(空数字)。
按照您的所有要求尝试这个
^(\d{0,6})(\.\d{1,2})?$