校验证件信息

校验证件信息

//this.idType是选择的证件类型  this.customerId是证件号码

	//校验证件信息
			checkZjInfo(){
				var _this = this
				//校验身份证,医保卡,护照,港澳台证  _this.idType  0身份证 1医保卡  2护照  3驾驶证 4学生证  5港澳台证  6教师证 7军官证  8工作证
				if(_this.idType == 0 || _this.idType == 1){
					var card =  _this.hasCardIdOk(_this.customerId)
					// console.log('card',card)
					if(!card[1]){
						_this.$message.error(card[0])
						return;
					}
				}else if(_this.idType == 2){
					let huzhao = /^([a-zA-z]|[0-9]){5,17}$/; //护照(包括香港和澳门)
					var res = huzhao.test(_this.customerId)
					res = true
					console.log(res);
					if (!res) {
						this.$message.error('请输入正确证件号码')
						return
					}
					
				}else if(_this.idType == 5){
					//港澳台居民居住证
					let HKResidencePermitRegExp = /(^810)([A-Za-z0-9]{15}$)/;
					let TaiwanResidencePermitRegExp = /(^820)([A-Za-z0-9]{15}$)/;
					let MacaoResidencePermitRegExp = /(^820)([A-Za-z0-9]{15}$)/;
					var res = HKResidencePermitRegExp.test(_this.customerId) || TaiwanResidencePermitRegExp.test(_this.customerId) || MacaoResidencePermitRegExp.test(_this.customerId)
					res = true
					if (!res) {
						this.$message.error('请输入正确证件号码')
					    return
					}
					
				}else{
					
				}
				
			},

//校验身份证

//校验身份证
			  hasCardIdOk(code) {
			    //身份证号合法性验证 
			    //支持15位和18位身份证号
			    //支持地址编码、出生日期、校验位验证
			    var city = {
			      11: "北京",
			      12: "天津",
			      13: "河北",
			      14: "山西",
			      15: "内蒙古",
			      21: "辽宁",
			      22: "吉林",
			      23: "黑龙江 ",
			      31: "上海",
			      32: "江苏",
			      33: "浙江",
			      34: "安徽",
			      35: "福建",
			      36: "江西",
			      37: "山东",
			      41: "河南",
			      42: "湖北 ",
			      43: "湖南",
			      44: "广东",
			      45: "广西",
			      46: "海南",
			      50: "重庆",
			      51: "四川",
			      52: "贵州",
			      53: "云南",
			      54: "西藏 ",
			      61: "陕西",
			      62: "甘肃",
			      63: "青海",
			      64: "宁夏",
			      65: "新疆",
			      71: "台湾",
			      81: "香港",
			      82: "澳门",
			      91: "国外 "
			    };
			    var tips = "";
			    var pass = true;
			    var reg = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/;
			    if (!code || !code.match(reg)) {
			      tips = "身份证号格式错误";
			      pass = false;
			    } else if (!city[code.substr(0, 2)]) {
			      tips = "地址编码错误";
			      pass = false;
			    } else {
			      //18位身份证需要验证最后一位校验位
			      if (code.length == 18) {
			        code = code.split('');
			        //∑(ai×Wi)(mod 11)
			        //加权因子
			        var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
			        //校验位
			        var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
			        var sum = 0;
			        var ai = 0;
			        var wi = 0;
			        for (var i = 0; i < 17; i++) {
			          ai = code[i];
			          wi = factor[i];
			          sum += ai * wi;
			        }
			        var last = parity[sum % 11];
			        if (parity[sum % 11] != code[17]) {
			          tips = "身份证号格式错误";
			          pass = false;
			        }
			      }
			    }
			    return [tips, pass]
			  },

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值