jquery验证以逗号分隔的整数列表

时间:2015-08-14 12:22:24

标签: jquery

我有一个表单,要求用户输入以逗号分隔的数字列表(整数)。如何在验证期间使用jquery检查输入,以验证它们是否只输入了数字和逗号?

3 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式评估输入(单个数字):

^[0-9](,[0-9])*$

对于长数字,正则表达式是:

^[0-9]+(,[0-9]+)*$

它强制用户避免空格或标签。

要允许0248但不允许00558,新正则表达式为:

^(([0]?[1-9][0-9]*)|[0])(,(([0]?[1-9][0-9]*)|[0]))*$

您可以在regex101 here

上测试它

答案 1 :(得分:0)

要允许任何正面的整数与空白或标签结合使用,您可以使用以下方法进行测试:

/^(\d+)(,\s*\d+\s*)*$/.test('1, 8   ,22')
--> true

<强>更新

如果我理解你的评论是正确的,并且你也想要排除以双“0”开头的数字,那么以下内容应该可以胜任:

var re=/^(\d?[1-9]+\d*)(,\s*\d?[1-9]+\d*\s*)*$/;
['1,2,3', 
 '01,02,03 , 040004, 05', 
 '001,002,3,4'].forEach(function(s){console.log(s,re.test(s));});

结果:

"1,2,3"                 true
"01,02,03 , 040004, 05" true
"001,002,3,4"           false

第二次修改

实际上,再次回到这个问题我注意到我之前的解决方案将'0'排除在有效输入之外。以下是RegExp现在也可以允许(根据Lithium的评论将[1-9]+ - 模式更改为[1-9]):

/^\s*(\d?([1-9]\d*)|0)\s*(,\s*(\d?[1-9]\d*|0)\s*)*$/

不幸的是,它不是很短,而且很快,但它有效。

答案 2 :(得分:-1)

使用.split() method并验证循环中的每个数字。或者,如果您只需要检查它是否是数字(没有范围或任何其他限制),那么您始终可以使用regex(请参阅RegExp Object