[常用正则详解链接[(https://www.cnblogs.com/lpw94/p/4864655.html)

     /*
     * 身份证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"){

                            alert("恭喜通过验证啦!");

                        }else{

                            alert("身份证号码错误!");

                        }

                    }else{

                        //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码

                        if(idCardLast==idCardY[idCardMod]){

                            alert("恭喜通过验证啦!");

                        }else{

                            alert("身份证号码错误!");

                        }

                    }

                }

            }else{

                alert("身份证格式不正确!");

            }

        }

小程序版本身份证验证加交互

 /*
   * 身份证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所在校验码数组位置
   */

  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") {
            wx.setStorageSync('idCard', idCard)
          } else {
            wx.showModal({
              confirmText: '确定',
              content: '身份证号码错误!',
              cancelColor: 'cancelColor',
              duration: 2000,
              showCancel: false,
              confirmColor: '#07c160'
            })
          }
        } else {
          //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
          if (idCardLast == idCardY[idCardMod]) {
            wx.setStorageSync('idCard', idCard)
          } else {
            wx.showModal({
              confirmText: '确定',
              content: '身份证号码错误!',
              cancelColor: 'cancelColor',
              duration: 2000,
              showCancel: false,
              confirmColor: '#07c160'
            })
          }
        }
      }
    } else {
      wx.showModal({
        confirmText: '确定',
        content: '身份证号码错误!',
        cancelColor: 'cancelColor',
        duration: 2000,
        showCancel: false,
        confirmColor: '#07c160'
      })
    }
  },

原文地址:http://www.cnblogs.com/Sultan-ST/p/16868595.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性