This commit is contained in:
邓晓坤
2019-09-12 16:22:38 +08:00
parent 90ea054ae0
commit ff8a261f79
195 changed files with 65268 additions and 0 deletions

View File

@@ -0,0 +1,170 @@
const idNoCheck = {
//是否以9开头
startWithNine: function(card) {
if (card.substr(0, 1) === '9') {
return true
}
return false
},
isCardNo: function(card) {
//身份证号码为15位或者18位15位时全为数字18位前17位为数字最后一位是校验位可能为数字或字符X
var reg = /(^\d{17}(\d|X)$)/
var reg2 = /(^\d{15}$)/
if (!reg.test(card) && !reg2.test(card)) {
return false
}
return true
},
//取身份证前两位,校验省份
checkProvince: function(card) {
var province = card.substr(0, 2)
if (vcity[province] == undefined) {
return false
}
return true
},
//检查生日是否正确
checkBirthday: function(card) {
var len = card.length
//身份证15位时次序为省3位3位2位2位2位校验位3位皆为数字
if (len == '15') {
var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/
var arr_data = card.match(re_fifteen)
var year = arr_data[2]
var month = arr_data[3]
var day = arr_data[4]
var birthday = new Date('19' + year + '/' + month + '/' + day)
return this.verifyBirthday('19' + year, month, day, birthday)
}
//身份证18位时次序为省3位3位4位2位2位校验位4位校验位末尾可能为X
if (len == '18') {
let re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/
let arr_data = card.match(re_eighteen)
let year = arr_data[2]
let month = arr_data[3]
let day = arr_data[4]
let birthday = new Date(year + '/' + month + '/' + day)
return this.verifyBirthday(year, month, day, birthday)
}
return false
},
//校验日期
verifyBirthday: function(year, month, day, birthday) {
var now = new Date()
// var now_year = now.getFullYear()
//年月日是否合理
if (birthday.getFullYear() == year && birthday.getMonth() + 1 == month && birthday.getDate() == day) {
//判断年份的范围0岁到100岁之间)
//var time = now_year - year;
if (year < 1900) {
return false
}
if (now.getTime() - birthday.getTime() < 0) {
return false
}
// if (time >= 0 && time <= 100) {
// return true;
// }
return true
}
return false
},
//校验位的检测
checkParity: function(card) {
//15位转18位
//card = changeFivteenToEighteen(card);
var len = card.length
if (len == '18') {
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2')
var cardTemp = 0,
i,
valnum
for (i = 0; i < 17; i++) {
cardTemp += card.substr(i, 1) * arrInt[i]
}
valnum = arrCh[cardTemp % 11]
if (valnum == card.substr(17, 1)) {
return true
}
return false
}
return false
},
/**
* 身份证校验
*
*/
isIdno: function(idNo) {
//是否为空
if (idNo === '') {
return false
}
//校验长度,类型
if (this.isCardNo(idNo) === false) {
return false
}
if (this.startWithNine(idNo) === true) {
return false
}
//检查省份 --
// if (this.checkProvince(idNo) === false) {
// return false;
// }
//校验生日
if (this.checkBirthday(idNo) === false) {
return false
}
//检验位的检测
if (this.checkParity(idNo) === false) {
return false
}
return true
}
}
const vcity = {
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: '国外'
}
export default idNoCheck