一个或两个数字的正则表达式

22

我有以下代码。它只能在两位数时工作。如果是一位数,则不起作用。我希望它在一位或两位数字的情况下都可以工作。
var numberRegex = /^[1-9][0-9]$/;
我尝试了类似于这样的代码,但不幸的是不起作用:
var numberRegex = /^[1-9]?[1-9][0-9]$/;
感谢您的支持。

4个回答

36

试试这个:

/^\d{1,2}$/;

从你的描述中看来,你不想接受像 01 这样的数字。

/^\d{1}|[1-9]\d{1}$/;

第二个正则表达式不太对。|的优先级低于^$。您还可以通过将[1-9]变为可选项来简化。 /^[1-9]?\d{1}$/ - Matt Ball
刚刚意识到你可以做得更好 - \d{1} 是多余的,等同于 \d - Matt Ball
7
我会选择/^[1-9]?\d$/。不需要使用或运算符,只需将第一个数字设置为可选项即可。 - Mark Reed
@MarkReed,你的决定很酷,但是一个数字零在你的正则表达式中是有效的。 - iamarsey
是的。0本身是有效的。这是有意的。 - Mark Reed

2

这个有效:

/^([0-9]{0,1}([1-9][0-9]){0,2})$/

2

试一试。

/^[0-9]|[0-9][0-9]$/

这应该可以胜任。使用或运算符即可完成此任务。

2

try this regex: /^[1-9]\d{0,1}$/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接