赞
踩
第一部分是定义了一个函数 validateIdnumber
,该函数接受三个参数:rule
、value
和callback
,其中value
为需要验证的身份证号码。
接着是对输入的身份证号码进行各种校验:
format
,用于检查身份证号码的格式是否符合规定。c
和 b
,分别存储了系数和校验码对照表。sum
。在校验部分,根据不同情况调用回调函数 callback
并传递相应的错误信息:
callback
函数而不传递任何参数,表示验证通过。- const validateIdnumber = (rule, value, callback) => {
- if (value) {
- // 1 "验证通过!", 0 //校验不通过 // id为身份证号码
- // 号码规则校验
- var format =
- /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0-9xX]$/
- // 区位码校验
- // 出生年月日校验 前正则限制起始年份为1900;
- const year = value.substr(6, 4) // 身份证年
- const month = value.substr(10, 2) // 身份证月
- const date = value.substr(12, 2) // 身份证日
- const time = Date.parse(month + '-' + date + '-' + year) // 身份证日期时间戳date
- const nowTime = Date.parse(new Date()) // 当前时间戳
- const dates = new Date(year, month, 0).getDate() // 身份证当月天数
- // 校验码判断
- var c = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] // 系数
- var b = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'] // 校验码对照表
- var idArray = value.split('')
- var sum = 0
- for (var k = 0; k < 17; k++) {
- sum += parseInt(idArray[k]) * parseInt(c[k])
- }
- if (!format.test(value)) {
- // 号码规则校验
- callback(new Error('身份证号码不合规'))
- } else if (time > nowTime || date > dates) {
- // 出生年月日校验 前正则限制起始年份为1900;
- callback(new Error('出生日期不合规'))
- } else if (idArray[17].toUpperCase() !== b[sum % 11].toUpperCase()) {
- // 校验码判断
- callback(new Error('身份证校验码不合规'))
- } else {
- callback()
- }
- } else {
- callback(new Error('请填写身份证号'))
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。