1

我想使用 Javascript 的正则表达式验证数量字段的内容。

有效输入将是一个整数,从零开始。如果前导零也可以删除,那就太好了。

例子

1         Pass
0         Pass
01        Failed
00        Failed
-1        Failed
1.1       Failed
1000000   Pass

我已经尝试过自己,但我得到的最好的是......

var regex = /[0-9]{1,9}/;

...它不会在负数或带前导零的数字上失败。

谢谢!

4

4 回答 4

4

这个正则表达式匹配任何没有前导的数字序列0(除了0它本身,它是单独处理的)。

var regex = /^0$|^[1-9][0-9]*$/;

^$是锚,将匹配锚定到字符串的开头和结尾。这意味着在数字之前或之后不允许任何内容,因此不能包含减号。

于 2012-10-31T16:01:12.430 回答
1

如果你想删除前导零而不是禁止它们,那么你可以使用这个:

^0*(\d{1,9})$

现在您将在捕获的组号中找到没有尾随零的数字。1(即使只0输入了一个)。

于 2012-10-31T16:01:01.480 回答
0
var re = /^0*([^0]\d*)$/;
var match = re.exec(str);
if (match) {
    var i = parseInt(match[1], 10);
}
else {
    //whoops, not an integer
}

(match[1] 返回不带前导零的 int,match[0] 是整个匹配的字符串)。

于 2012-10-31T16:03:46.750 回答
0

试试^\d+$。应该匹配正整数。

于 2012-10-31T16:00:57.353 回答