为了账号安全,请及时绑定邮箱和手机立即绑定

Reg Ex允许最小两位数和Max可以是anysize

Reg Ex允许最小两位数和Max可以是anysize

小怪兽爱吃肉 2019-04-25 18:19:48
我需要验证(JavaScript)逗号分隔的整数字符串。它应该允许最少两位数字,并且不应该对最大尺寸有任何限制。function allowonlyTwoDigitIntegers(field) {         if (/^[0-9]{2,10}$/.test(+field))             return true;         else {             return false;         }     }我使用以下功能,但它无法正常工作。我不明白这里的问题......示例:: 1,22提供InValid 11,22:提供有效 11,9999999999999999999999999999999999999等:提供无效(这应该是有效的)我将逗号分隔的字符串转换为数组,在循环中我通过传递每个单独的值来调用上面的函数。条件需要满足:1。不允许使用单个数字。
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

你没有说“不工作”意味着什么。您将最大值限制为10,因此与“ ...不限制最大尺寸 ” 不一致。

/^\d\d+$/ 应该做的伎俩。

function checkValue(value) {
  document.getElementById('result').textContent = /^\d\d+$/.test(value);}
<input onblur="checkValue(this.value)"><span id="result"></span>

你也说“ ...逗号分隔的整数字符串... ”所以你想检查逗号之间的每个整数,还是删除所有逗号并测试剩下的内容?如果你想要前者,请考虑:


function checkValue(value) {

  return /^\d\d+$/.test(value);

}


function checkNumbers(s) {

  return s.split(',').every(function(v){return checkValue(v)});

}


var testSet1 = '12,1231,12,312312';

var testSet2 = '12,1231,1,312312';


[testSet1, testSet2].forEach(function(set) {

  document.write('<br>set : ' + set + ' pass? : ' + checkNumbers(set));

});

如果您只想测试整个字符串,那么:


/^(\d\d+)(,\d\d+)*$/

会这样做,例如


['123,232,44,21','12','1','1231,123123123123,1231','123,2'].forEach(function(s) {

  document.write('<br>' + s + ': ' + /^(\d\d+)(,\d\d+)*$/.test(s));

});


查看完整回答
反对 回复 2019-05-07
?
LEATH

TA贡献1936条经验 获得超6个赞

使用描述整个记录的模式(同时所有字段):

function allowonlyTwoDigitIntegers(record) {
    return /^\d{2,}(?:,\d{2,})*$/.test(record);}

或使用其否定:

function allowonlyTwoDigitIntegers(record) {
    return !/\b\d\b|\B,|[^\d,]|^$/.test(record);}


查看完整回答
反对 回复 2019-05-07
  • 2 回答
  • 0 关注
  • 353 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信