共计 3483 个字符,预计需要花费 9 分钟才能阅读完成。
身份证校验
function checkIDCard(idcode) { | |
// 加权因子 | |
var weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] | |
// 校验码 | |
var check_code = ['1', '0', 'X', 'x', '9', '8', '7', '6', '5', '4', '3', '2'] | |
var code = idcode + '' | |
var last = idcode[17] // 最初一位 | |
var seventeen = code.substring(0, 17) | |
// ISO 7064:1983.MOD 11-2 | |
// 判断最初一位校验码是否正确 | |
var arr = seventeen.split('') | |
var len = arr.length | |
var num = 0 | |
for (var i = 0; i < len; i++) {num = num + arr[i] * weight_factor[i] | |
} | |
// 获取余数 | |
var resisue = num % 11 | |
var last_no = check_code[resisue] | |
// 格局的正则 | |
// 正则思路 | |
/* | |
第一位不可能是 0 | |
第二位到第六位能够是 0 -9 | |
第七位到第十位是年份,所以七八位为 19 或者 20 | |
十一位和十二位是月份,这两位是 01-12 之间的数值 | |
十三位和十四位是日期,是从 01-31 之间的数值 | |
十五,十六,十七都是数字 0 -9 | |
十八位可能是数字 0 -9,也可能是 X | |
*/ | |
var idcard_patter = | |
/^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X]|[x])$/ | |
// 判断格局是否正确 | |
var format = idcard_patter.test(idcode) | |
// 返回验证后果,校验码和格局同时正确才算是非法的身份证号码 | |
// return last === last_no && format ? true : false; | |
return !!format | |
} |
手机号码校验
function checkPhone(phone) {if (!(/^1[3456789]\d{9}$/.test(phone))) {return false} else {return true} | |
} |
校验军官证
function isOfficerCard(card) { | |
// 规定:军 / 兵 / 士 / 文 / 职 / 广 /(其余中文)+ "字第" + 4 到 8 位字母或数字 + "号" | |
// 样本:军字第 2001988 号, 士字第 P011816X 号 | |
var reg = /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/ | |
if (reg.test(card) === false) { | |
return { | |
'status': 0, | |
'msg': '军官证号不合规' | |
} | |
} else { | |
return { | |
'status': 1, | |
'msg': '校验通过' | |
} | |
} | |
} |
护照
function isPassPortCard(card) { | |
// 规定:14/15 结尾 + 7 位数字, G + 8 位数字, P + 7 位数字, S/D + 7 或 8 位数字, 等 | |
// 样本:141234567, G12345678, P1234567 | |
var reg = /^([a-zA-z]|[0-9]){5,17}$/ | |
if (reg.test(card) === false) { | |
return { | |
'status': 0, | |
'msg': '护照号码不合规' | |
} | |
} else { | |
return { | |
'status': 1, | |
'msg': '校验通过' | |
} | |
} | |
} |
港澳居民来往边疆通行证
function isHKCard(card) { | |
// 规定:H/M + 10 位或 6 位数字 | |
// 样本:H1234567890 | |
var reg = /^([A-Z]\d{6,10}(\(\w{1}\))?)$/ | |
if (reg.test(card) === false) { | |
return { | |
'status': 0, | |
'msg': '港澳居民来往边疆通行证号码不合规' | |
} | |
} else { | |
return { | |
'status': 1, | |
'msg': '校验通过' | |
} | |
} | |
} |
台湾身份证
function checkTWIdCard(idNo) {if (idNo == null || idNo == '') { | |
return { | |
'respCode': '9', | |
'respDesc': '空值' | |
} | |
} | |
if (idNo.length != 10) { | |
return { | |
'respCode': '1', | |
'respDesc': '國民身分證統一編號長度不正確 (10)' | |
} | |
} | |
var eng = idNo.substring(0, 1) | |
var num = idNo.substring(1, 10) | |
var sex = idNo.substring(1, 2) | |
eng = eng.toUpperCase() | |
var regNum = /^[0-9]+.?[0-9]*/ // 判断字符串是否为数字 // 判断正整数 /[1−9]+[0−9]∗]∗/;// 判断字符串是否为数字 // 判断正整数 /[1−9]+[0−9]∗]∗/ | |
var regEng = /^[A-Za-z]+$/ | |
if (!regNum.test(num)) { | |
return { | |
'respCode': '1', | |
'respDesc': '國民身分證統一編號不正確' | |
} | |
} | |
if (sex != 1 && sex != 2) { | |
return { | |
'respCode': '1', | |
'respDesc': '國民身分證統一編號不正確' | |
} | |
} | |
if (!regEng.test(eng)) { | |
return { | |
'respCode': '1', | |
'respDesc': '國民身分證統一編號不正確' | |
} | |
} | |
// var key=[‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’J’,’K’,’L’,’M’,’N’,’P’,’Q’,’R’,’S’,’T’,’U’,’V’,’X’,’Y’,’W’,’Z’,’I’,’O’]; | |
var key = 'ABCDEFGHJKLMNPQRSTUVXYWZIO' | |
var value = ['10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', | |
'27', '28', '29', '30', '31', '32', '33', '34', '35' | |
] | |
var pos = key.indexOf(eng) | |
if (pos == -1) { | |
return { | |
'respCode': '1', | |
'respDesc': '國民身分證統一編號不正確' | |
} | |
} | |
var x1 = value[pos].substring(0, 1) | |
var x2 = value[pos].substring(1, 2) | |
var y = parseInt(x1) + 9 * parseInt(x2) + 8 * parseInt(num.substring(0, 1)) + 7 * parseInt(num.substring(1, 2)) + 6 * | |
parseInt(num.substring(2, 3)) + 5 * parseInt(num.substring(3, 4)) + 4 * parseInt(num.substring(4, 5)) + 3 * parseInt(num.substring(5, 6)) + 2 * parseInt(num.substring(6, 7)) + parseInt(num.substring(7, 8)) | |
var checkResult = y % 10 | |
if ((10 - checkResult) == num.substring(8, 9)) { | |
return { | |
'respCode': '0', | |
'respDesc': 'success' | |
} | |
} else {if (checkResult == 10 && num.substring(8, 9) == 0) { | |
// 若取余之后的后果为 0,那么开端的数为 0 | |
return { | |
'respCode': '0', | |
'respDesc': 'success' | |
} | |
} else { | |
return { | |
'respCode': '1', | |
'respDesc': '國民身分證統一編號不正確' | |
} | |
} | |
} | |
} |
台湾居民来往大陆通行证
function isTWCard(card) { | |
// 规定:新版 8 位或 18 位数字,旧版 10 位数字 + 英文字母 | |
// 样本:12345678 或 1234567890B | |
var reg = /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/ | |
if (reg.test(card) === false) { | |
return { | |
'status': 0, | |
'msg': '台湾居民来往大陆通行证号码不合规' | |
} | |
} else { | |
return { | |
'status': 1, | |
'msg': '校验通过' | |
} | |
} | |
} |
正文完
发表至: javascript
2021-02-01