util.js(日期格式,手机号码,身份证等验证)

//Date.prototype.format = function(fmt) {
  export function  dateFormat(date,fmt) {  
     var o = { 
        "M+" : date.getMonth()+1,                 //月份 
        "d+" : date.getDate(),                    //日 
        "h+" : date.getHours(),                   //小时 
        "m+" : date.getMinutes(),                 //分 
        "s+" : date.getSeconds(),                 //秒 
        "q+" : Math.floor((this.getMonth()+3)/3), //季度 
        "S"  : date.getMilliseconds()             //毫秒 
    }; 
    if(/(y+)/.test(fmt)) {
            fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length)); 
    }
     for(var k in o) {
        if(new RegExp("("+ k +")").test(fmt)){
             fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
         }
     }
    return fmt; 
}        

//校验手机号码

 export  function validatePhoneNumber(phone){

         let phoneCodeVerification = /^[1][3,4,5,7,8][0-9]{9}$/; //    /^1[34578]\d{9}$/.test(phone)

        return phoneCodeVerification.test(phone);

}

//固定电话号码

 export  function validateTelNumber(tel){

        return     /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(tel);

}

//身份证

  1. //身份证正则表达式(15位)

  2. isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;

  3. //身份证正则表达式(18位)

  4. isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;

  5. 身份证正则合并:(^\d{15}$)|(^\d{17}([0-9]|X)$)

export function validateID(number){

      return  /(^\d{15}$)|(^\d{17}([0-9]|X)$)/i.test(number)

}

严格校验身份证

export function checkIDCard(idcode){

     const  weightFactor=[ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]   //

     const code=`${idcode}`

     const last =idcode[17]//

     const seventeen=code.substring(0,17)

//ios 7064:1983.MOD 11-2

//判断最后一位校验码是否正确

const arr=seventeen.split('')

const len=arr.lenght

let num=0

for(let i;i<len;i++){

   num +=arr[i]*weightFactor[i]

}

//获取余数 

const resisue=num%11

const lastNo=checkCode[resisue]

//正则

/*

第一位不可能时0

第二位到第六位可以时0-9

第七位到低十位时年份,所以七八位是19或20

十一位和十二位是月,这两位是01-12之间的数值

十三和十四位十日期 从01--31

十五 十六十七 是0-9

十八0-9或者X

*/

const idcardPatter=/^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/

  //18位  /[1-9]\d{5}(((1[9|8])\d{2})|(20[0-1]\d))((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)/

//15位/[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}/

const format=idcardPatter.test(idcode)

//校验码和格式同时正确才算合法

return !!(last===lastNo&&format)

}

猜你喜欢

转载自blog.csdn.net/wenmin1987/article/details/82499140
今日推荐