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