身份证号、电话号码的校验

总结几个有用的正则校验,首先身份证号的校验,电话号码的校验。

校验中国的身份证号

/**
 *判断身份证号码格式函数
 *公民身份号码是特征组合码,
 *排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码
 */
  function isChinaIDCard(StrNo){  
       StrNo = StrNo.toString();
       if(StrNo.length == 15){        
            if(!isValidDate("19"+StrNo.substr(6,2),StrNo.substr(8,2),StrNo.substr(10,2))){return false;}      
	}else if(StrNo.length == 18){    
            if (!isValidDate(StrNo.substr(6,4),StrNo.substr(10,2),StrNo.substr(12,2))){return false;}  
	}else{  
	      alert("输入的身份证号码必须为15位或者18位!");  
	      return false;
	 }
				  
         if (StrNo.length==18)  
          {  
	var a,b,c  
                if (!isNumber(StrNo.substr(0,17))){alert("身份证号码错误,前17位不能含有英文字母!");return false;}  
	            a=parseInt(StrNo.substr(0,1))*7+parseInt(StrNo.substr(1,1))*9+parseInt(StrNo.substr(2,1))*10;  
	            a=a+parseInt(StrNo.substr(3,1))*5+parseInt(StrNo.substr(4,1))*8+parseInt(StrNo.substr(5,1))*4;  
	            a=a+parseInt(StrNo.substr(6,1))*2+parseInt(StrNo.substr(7,1))*1+parseInt(StrNo.substr(8,1))*6;    
	            a=a+parseInt(StrNo.substr(9,1))*3+parseInt(StrNo.substr(10,1))*7+parseInt(StrNo.substr(11,1))*9;    
	            a=a+parseInt(StrNo.substr(12,1))*10+parseInt(StrNo.substr(13,1))*5+parseInt(StrNo.substr(14,1))*8;    
		a=a+parseInt(StrNo.substr(15,1))*4+parseInt(StrNo.substr(16,1))*2;  
		b=a%11;  
		if (b==2)   //最后一位为校验位  
		{  
		      c=StrNo.substr(17,1).toUpperCase();   //转为大写X  
		}  
		else  
		{  
		        c=parseInt(StrNo.substr(17,1));  
		}  
		switch(b)  
		{  
		       case 0: if ( c!=1 ) {alert("身份证号码校验位错:最后一位应该为:1");return false;}break;  
		       case 1: if ( c!=0 ) {alert("身份证号码校验位错:最后一位应该为:0");return false;}break;  
		       case 2: if ( c!="X") {alert("身份证号码校验位错:最后一位应该为:X");return false;}break;  
		       case 3: if ( c!=9 ) {alert("身份证号码校验位错:最后一位应该为:9");return false;}break;  
		       case 4: if ( c!=8 ) {alert("身份证号码校验位错:最后一位应该为:8");return false;}break;  
		       case 5: if ( c!=7 ) {alert("身份证号码校验位错:最后一位应该为:7");return false;}break;  
		       case 6: if ( c!=6 ) {alert("身份证号码校验位错:最后一位应该为:6");return false;}break;  
		       case 7: if ( c!=5 ) {alert("身份证号码校验位错:最后一位应该为:5");return false;}break;  
		       case 8: if ( c!=4 ) {alert("身份证号码校验位错:最后一位应该为:4");return false;}break;  
		        case 9: if ( c!=3 ) {alert("身份证号码校验位错:最后一位应该为:3");return false;}break;  
		      case 10: if ( c!=2 ){alert("身份证号码校验位错:最后一位应该为:2");return false;}  
		}  
		 } else {//15位身份证号  
		         if (!isNumber(StrNo)) {alert("身份证号码错误,前15位不能含有英文字母!");return false;}    
		 }  
		          return true;
				
		}  
				    
function isValidDate(iY, iM, iD) {
        if (iY>2200 || iY<1900 || !isNumber(iY)){
	alert("输入身份证号,年度"+iY+"非法!"); return false;}
       if (iM>12 || iM<=0 || !isNumber(iM)){
	 alert("输入身份证号,月份"+iM+"非法!");
	 return false;
       }
       if (iD>31 || iD<=0 || !isNumber(iD)){
	alert("输入身份证号,日期"+iD+"非法!");
	return false;
       }
              return true;
   }  
				/**
				* 验证是不是数字
				*/
				function isNumber(oNum) {
				  if(!oNum) return false;
				  var strP=/^\d+(\.\d+)?$/;
				  if(!strP.test(oNum)) return false;
				  try{
				  if(parseFloat(oNum)!=oNum) return false;
				  }
				  catch(ex)
				  {
				   return false;
				  }
				  return true;
				}

 电话号码的校验

/**
				* 验证电话号码
				*/
				function IsTelephone(obj){
					    var patternPhone = /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/;
					    var patternMobile = /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/;
					    if(patternPhone.test(obj)||patternMobile.test(obj)){
					    	return true;
					    }
					    return false;
				}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值