码迷,mamicode.com
首页 > 编程语言 > 详细

javascript、正则的验证

时间:2015-09-06 15:53:56      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

js验证、手机、固话、邮箱、身份证、网址、日期等

Verification.js文件

/*
* 手机号码格式
* 只允许以13、15、18开头的号码
* 如:13012345678、15929224344、18201234676
*/
var regMobile=/^1[3|4|5|8][0-9]\d{4,8}$/;
/*
* 固定电话号码格式
* 因为固定电话格式比较复杂,情况比较多,主要验证了以下类型
* 如:010-12345678、0912-1234567、(010)-12345678、(0912)1234567、(010)12345678、(0912)-1234567、01012345678、09121234567
*/
var regPhone=/^(^0\d{2}-?\d{8}$)|(^0\d{3}-?\d{7}$)|(^0\d2-?\d{8}$)|(^0\d3-?\d{7}$)$/;
/*
* Email邮箱
* 如:zhangsan@163.com、li-si@236.net、wan_gwu999@SEED.NET.TW
*/
var regEmail=/^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+(\.[a-zA-Z]{2,3})+$/;
/*
* 身份证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=/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
  //如果通过该验证,说明身份证格式正确,但准确性还需计算
  if(regIdCard.test(idCard)){
    if(idCard.length==18){
      var idCardWi=new Array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ); //将前17位加权因子保存在数组里
      var idCardY=new Array( 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ); //这是除以11后,可能产生的11位余数、验证码,也保存成数组
      var idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和
      for(var i=0;i<17;i++){
        idCardWiSum+=idCard.substring(i,i+1)*idCardWi[i];
      }
      var idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置
      var idCardLast=idCard.substring(17);//得到最后一位身份证号码
      //如果等于2,则说明校验码是10,身份证号码最后一位应该是X
      if(idCardMod==2){
        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{6}$/;
/*
* 用户名
* 只能是字母数字下划线,并且以字母开头(5-16位)
*/
var regUserName=/^[a-zA-Z]\w{4,15}$/;
/*
* IP地址
* 如:192.168.1.102
*/
var regIP=/^((([1-9]\d?)|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}(([1-9]\d?)|(1\d{2})|(2[0-4]\d)|(25[0-5]))$/;
/*
* 只能是中文汉字
*/
var regChineseChar=/^[\u4e00-\u9fa5]+$/;
/*
* 网址
* 只允许http、https、ftp这三种
* 如:http://www.baidu.com
*/
var regWeb=/^(([hH][tT]{2}[pP][sS]?)|([fF][tT][pP]))\:\/\/[wW]{3}\.[\w-]+\.\w{2,4}(\/.*)?$/;
/*
* 日期格式验证
* 因为日期格式比较多,主要验证了以下类型
* 2012-05-14、2012/05/6、2012.5.14、20120528
*/
var regDate=/^[1-9]\d{3}([-|\/|\.])?((0\d)|([1-9])|(1[0-2]))\1(([0|1|2]\d)|([1-9])|3[0-1])$/;
/*
* 调用以上正则表达式的方法
* 以验证电话号码格式为例
*/
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() % 100)>9?(this.getYear() % 100).toString():0 + (this.getYear() % 100)); 

  str=str.replace(/MM/,this.getMonth()>9?this.getMonth().toString():0 + 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()>9?this.getDate().toString():0 + this.getDate()); 
  str=str.replace(/d|D/g,this.getDate()); 

  str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():0 + this.getHours()); 
  str=str.replace(/h|H/g,this.getHours()); 
  str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():0 + this.getMinutes()); 
  str=str.replace(/m/g,this.getMinutes()); 

  str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():0 + 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() + 1, //月份
    "d": date.getDate(), //
    "h": date.getHours(), //小时
    "m": date.getMinutes(), //
    "s": date.getSeconds(), //
    "q": Math.floor((date.getMonth() + 3) / 3), //季度
    "S": date.getMilliseconds() //毫秒
  };

  format = format.replace(/([YMdhmsqS])+/g, function(all, t){
    var v = map[t];
    if (v !== undefined) {
      if (all.length > 1) {
        v = "0" + v;
        v = v.substr(v.length - 2);
      }
      return v;
    }
    else if (t === "Y") {
      return (date.getFullYear() + "").substr(4 - 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>

 

javascript、正则的验证

标签:

原文地址:http://www.cnblogs.com/qhorse/p/4785569.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!