javascript、正则的验证

时间:2023-03-09 04:03:46
javascript、正则的验证
js验证、手机、固话、邮箱、身份证、网址、日期等

Verification.js文件

/*
* 手机号码格式
* 只允许以13、15、18开头的号码
* 如:13012345678、15929224344、18201234676
*/
var regMobile=/^[|||][-]\d{,}$/;
/*
* 固定电话号码格式
* 因为固定电话格式比较复杂,情况比较多,主要验证了以下类型
* 如:010-12345678、0912-1234567、(010)-12345678、(0912)1234567、(010)12345678、(0912)-1234567、01012345678、09121234567
*/
var regPhone=/^(^\d{}-?\d{}$)|(^\d{}-?\d{}$)|(^\d2-?\d{}$)|(^\d3-?\d{}$)$/;
/*
* Email邮箱
* 如:zhangsan@163.com、li-si@236.net、wan_gwu999@SEED.NET.TW
*/
var regEmail=/^([a-zA-Z0-]+[_|\-|\.]?)*[a-zA-Z0-]+@([a-zA-Z0-]+[_|\-|\.]?)*[a-zA-Z0-]+(\.[a-zA-Z]{,})+$/;
/*
* 身份证15位编码规则:dddddd yymmdd xx p
* dddddd:6位地区编码
* yymmdd: 出生年(两位年)月日,如:910215
* xx: 顺序编码,系统产生,无法确定
* p: 性别,奇数为男,偶数为女
*
* 身份证18位编码规则:dddddd yyyymmdd xxx y
* dddddd:6位地区编码
* yyyymmdd: 出生年(四位年)月日,如:19910215
* xxx:顺序编码,系统产生,无法确定,奇数为男,偶数为女
* y: 校验码,该位数值可通过前17位计算获得
*
* 前17位号码加权因子为 Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]
* 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]
* 如果验证码恰好是10,为了保证身份证是十八位,那么第十八位将用X来代替
* 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )
* i为身份证号码1...17 位; Y_P为校验码Y所在校验码数组位置
*/
function validateIdCard(idCard){
  //15位和18位身份证号码的正则表达式
  var regIdCard=/^(^[-]\d{}((\d)|([-]))(([||]\d)|[-])\d{}$)|(^[-]\d{}[-]\d{}((\d)|([-]))(([||]\d)|[-])((\d{})|\d{}[Xx])$)$/;
  //如果通过该验证,说明身份证格式正确,但准确性还需计算
  if(regIdCard.test(idCard)){
    if(idCard.length==){
      var idCardWi=new Array( , , , , , , , , , , , , , , , , ); //将前17位加权因子保存在数组里
      var idCardY=new Array( , , , , , , , , , , ); //这是除以11后,可能产生的11位余数、验证码,也保存成数组
      var idCardWiSum=; //用来保存前17位各自乖以加权因子后的总和
      for(var i=;i<;i++){
        idCardWiSum+=idCard.substring(i,i+)*idCardWi[i];
      }
      var idCardMod=idCardWiSum%;//计算出校验码所在数组的位置
      var idCardLast=idCard.substring();//得到最后一位身份证号码
      //如果等于2,则说明校验码是10,身份证号码最后一位应该是X
      if(idCardMod==){
        if(idCardLast=="X"||idCardLast=="x"){
          return true;
        }else{
          alert("身份证号码错误!");
        }
      }else{
      //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
        if(idCardLast==idCardY[idCardMod]){
          return true;
        }else{
          alert("身份证号码错误!");
        }
      }
    }
  }else{
    alert("身份证格式不正确!");
  }
}
/*
* 只能为正整数
*/
var regNum=/^\d+$/;
/*
* 邮政编码
*/
var regPostCode=/^\d{}$/;
/*
* 用户名
* 只能是字母数字下划线,并且以字母开头(5-16位)
*/
var regUserName=/^[a-zA-Z]\w{,}$/;
/*
* IP地址
* 如:192.168.1.102
*/
var regIP=/^((([-]\d?)|(\d{})|([-]\d)|([-]))\.){}(([-]\d?)|(\d{})|([-]\d)|([-]))$/;
/*
* 只能是中文汉字
*/
var regChineseChar=/^[\u4e00-\u9fa5]+$/;
/*
* 网址
* 只允许http、https、ftp这三种
* 如:http://www.baidu.com
*/
var regWeb=/^(([hH][tT]{}[pP][sS]?)|([fF][tT][pP]))\:\/\/[wW]{}\.[\w-]+\.\w{,}(\/.*)?$/;
/*
* 日期格式验证
* 因为日期格式比较多,主要验证了以下类型
* 2012-05-14、2012/05/6、2012.5.14、20120528
*/
var regDate=/^[-]\d{}([-|\/|\.])?((\d)|([-])|([-]))\(([||]\d)|([-])|[-])$/;
/*
* 调用以上正则表达式的方法
* 以验证电话号码格式为例
*/
function onCheck(tel){
  if(regMobile.test(tel)){
    return true;
  }else{
    alert("联系方式格式不正确!");
  }
} Date.prototype.Format = function(formatStr)
{
  var str = formatStr;
  var Week = ['日','一','二','三','四','五','六'];   str=str.replace(/yyyy|YYYY/,this.getFullYear());
  str=str.replace(/yy|YY/,(this.getYear() % )>?(this.getYear() % ).toString():'' + (this.getYear() % ));   str=str.replace(/MM/,this.getMonth()>?this.getMonth().toString():'' + this.getMonth());
  str=str.replace(/M/g,this.getMonth());   str=str.replace(/w|W/g,Week[this.getDay()]);   str=str.replace(/dd|DD/,this.getDate()>?this.getDate().toString():'' + this.getDate());
  str=str.replace(/d|D/g,this.getDate());   str=str.replace(/hh|HH/,this.getHours()>?this.getHours().toString():'' + this.getHours());
  str=str.replace(/h|H/g,this.getHours());
  str=str.replace(/mm/,this.getMinutes()>?this.getMinutes().toString():'' + this.getMinutes());
  str=str.replace(/m/g,this.getMinutes());   str=str.replace(/ss|SS/,this.getSeconds()>?this.getSeconds().toString():'' + this.getSeconds());
  str=str.replace(/s|S/g,this.getSeconds());   return str;
} function dateFormat(date, format){   date = new Date();
  var map = {
    "YY": date.getYear(),
    "M": date.getMonth() + , //月份
    "d": date.getDate(), //日
    "h": date.getHours(), //小时
    "m": date.getMinutes(), //分
    "s": date.getSeconds(), //秒
    "q": Math.floor((date.getMonth() + ) / ), //季度
    "S": date.getMilliseconds() //毫秒
  };   format = format.replace(/([YMdhmsqS])+/g, function(all, t){
    var v = map[t];
    if (v !== undefined) {
      if (all.length > ) {
        v = "" + v;
        v = v.substr(v.length - );
      }
      return v;
    }
    else if (t === "Y") {
      return (date.getFullYear() + "").substr( - all.length);
    }
    return all;
  });
  return format; } html文件验证 <script src="jquery.min.js"></script> <script src="Verification.js"></script> <script>   $(function(){     $('#number').blur(function(){       number = $('#number).val();
      if ( number == '') {         return false;
      } else {         checkIdCard = validataIdCard(number);
      }
    });   });   $('#phone_number').blur(function(){     phone_number = $('#phone_number').val();
    if(phone_number == ''){       return false;
    } else {       checkPhone = onCheck(phone_number);
    }   
  });
</script>