我不想在我的文本框中允许9位数字格式:123-12-1234或123456789

时间:2016-10-04 10:40:32

标签: javascript jquery asp.net-mvc

我这样想:

function k(){
  var x = $('#textArea').val();
  for (i = 0; i < x.length; i++)
  {
    if(x[i].match(/^[0-9]/))
    {
      if(x[i+1].match(/^[0-9]/) && x[i+2].match(/^[0-9]/) && x[i+3].match(/^[-]/) && x[i+4].match(/^[0-9]/) && x[i+5].match(/^[0-9]/) && x[i+6].match(/^[-]/) && x[i+7].match(/^[0-9]/) && x[i+8].match(/^[0-9]/) && x[i+9].match(/^[0-9]/) && x[i+10].match(/^[0-9]/))
      {
        if(x[i+11].match(/^[0-9]/))
        {
          return 'true';
        }
        else
        {
          return false;
        }
      }
      else if(x[i+1].match(/^[0-9]/) && x[i+2].match(/^[0-9]/) && x[i+3].match(/^[0-9]/) && x[i+4].match(/^[0-9]/) && x[i+5].match(/^[0-9]/) && x[i+6].match(/^[0-9]/) && x[i+7].match(/^[0-9]/) && x[i+8].match(/^[0-9]/))
      {
        if(x[i+9].match(/^[0-9]/))
        {
          return 'true';
        }
        else
        {
          return false;
        }
      }
      else
      {
        continue;
      }
    }
    else
    {
      continue;
    }
  }
  return 'true';
}

3 个答案:

答案 0 :(得分:1)

或者只是

var x = $('#textArea').val();
x = x.replace(/\D+/g,""); //first remove all non-digits from x
if (x.length <= 8 )
{
  return true;
}
return false;

或者,如果您只想允许-digits

var x = $('#textArea').val();
var matches = x.match( /[0-9-]/g ).length;
if ( !matches || matches.length != x.length ) 
{
  return false;
}
x = x.replace(/\D+/g,""); //first remove all non-digits from x
if (x.length <= 8 )
{
  return true;
}
return false;

答案 1 :(得分:0)

&#13;
&#13;
function myFunc() {
   var patt = new RegExp("\d{3}[\-]\d{2}[\-]\d{4}");
   var x = document.getElementById("ssn");
   var res = patt.test(x.value);
   if(!res){
    x.value = x.value
        .match(/\d*/g).join('')
        .match(/(\d{0,3})(\d{0,2})(\d{0,4})/).slice(1).join('-')
        .replace(/-*$/g, '');
   }
}
&#13;
<input class="required-input" id="ssn" type="text" name="ssn" placeholder="123-45-6789" onBlur = "myFunc()">
&#13;
&#13;
&#13;

答案 2 :(得分:0)

或使用纯正的regexp

匹配123-45-678和12345678格式:

var x = $('#textArea').val();
if (x.match(/^\d{3}-\d{2}-\d{3}$|^\d{8}$/) {
  return true;
} else return false;

匹配少于9位的任何数字:

var x = $('#textArea').val();
if (x.match(/^(?:\d-?){1,8}$/) {
  return true;
} else return false;