uniapp,vue中的身份证格式校验

18 篇文章 2 订阅

html

<template>
	<view>
		<input type="text" placeholder="请输入身份证号" placeholder-style="color:#999999" maxlength="18"
			v-model="dataFrom.idCardNumber" />
		<input type="text" placeholder="请输入联系电话" placeholder-style="color:#999999" maxlength="11"
			v-model="dataFrom.phone" />
		<button type="default" @click="add">提交</button>
	</view>
</template>

<script>
	import idCardNumberVerify from "./idCardNumber/index.js"
	export default {
		data() {
			return {
				dataFrom: {
					idCardNumber: null,
					phone: null
				}
			}
		},
		methods: {
			add() {
				var idCardMsg = idCardNumberVerify.identityIDCard(this.dataFrom.idCardNumber);
				if (!idCardMsg.isPass) {
					uni.showToast({
						title: idCardMsg.errorMsg,
						icon: 'none'
					})
					return;
				}
				var phone = /^1[3456789]\d{9}$/;
				if (!phone.test(this.dataFrom.phone)) {
					uni.showToast({
						title: "手机号格式错误",
						icon: 'none'
					})
				}
			},
		}
	}
</script>

新建一个idCardNumber文件夹

index.js

//身份证号严格校验
function identityIDCard(code) {
	//身份证号前两位代表区域
	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 idCardReg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
	var errorMsg = ""; //错误提示信息
	var isPass = true; //身份证验证是否通过(true通过、false未通过)

	//如果身份证不满足格式正则表达式
	if (!idCardReg.test(code)) {
		errorMsg = "身份证格式有误!";
		isPass = false;
	}

	//区域数组中不包含需验证的身份证前两位
	else if (!city[code.substr(0, 2)]) {
		errorMsg = "身份证地址编码有误!";
		isPass = 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]) {
				errorMsg = "身份证号不存在!";
				isPass = false;
			}
		}
	}
	var returnParam = {
		'errorMsg': errorMsg,
		'isPass': isPass
	}
	return returnParam;
}
module.exports = {
	identityIDCard,
}

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值