证件
1.身份证
在不考虑那么完全的情况下,这个就够用了
/^[1-8][1-7]\d{4}(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dX]$/
这个是在充分考虑的情况下
function validateSecIdCard (value) {
if (!value) return true
var iSum = 0
var sId = value
var aCity = {
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: '澳门',
83: '台湾',
91: '国外'
}
// 这里使用了简单正则,要是想,可以使用上面那个版的正则
if (!/^\d{17}(\d|x)$/i.test(sId)) {
return false
}
sId = sId.replace(/x$/i, 'a')
// 非法地区
if (aCity[parseInt(sId.substr(0, 2))] === null) {
return false
}
var sBirthday = sId.substr(6, 4) + '-' + Number(sId.substr(10, 2)) +
'-' + Number(sId.substr(12, 2))
var d = new Date(sBirthday.replace(/-/g, '/'))
// 非法生日
if (sBirthday !== (d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d
.getDate())) {
return false
}
for (let i = 17; i >= 0; i--) {
iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11)
}
if (iSum % 11 !== 1) {
return false
}
return true
}
2.港澳台居住证
/**
* 1)18位的:包含三种开头:香港以810000开头,澳门以820000开头,台湾以830000开头,7为以后和身份证的验证规则一样。
*/
/^8[123]0000(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dX]$/
3.港澳居民来往内地通行证
/**
* 当证件类型=港澳居民来往内地通行证时,证件号的正则规则兼容以下三种类型:
* 1)H/M + 10位阿拉伯数字
* 2)C/M + 8位阿拉伯数字
* 3)C + 1位英文字母 + 7位阿拉伯数字。第二位英文字母不能是I或O
*/
/^[HM][0-9]{10}$|^[CM][0-9]{8}$|^[C][A-HJ-NP-Z][0-9]{7}$/
4.台湾居民来往大陆通行证
/**
* 1)8位阿拉伯数字
*/
/^[0-9]{8}$/
5.军官证
/^[a-zA-Z0-9]{7,21}$/
6.香港居民身份证
/**
* 1)8位的:1位英文字母+6位阿拉伯数字+(1位阿拉伯数字或A)
* 1)9位的:2位英文字母+6位阿拉伯数字+(1位阿拉伯数字或A)
*/
/^([A-Za-z]{1,2})\d{6}\([\dA]\)$/
7.澳门居民身份
/**
* 1)8位:1/5/7+6位阿拉伯数字+(1位阿拉伯数字)
*/
/^[1|5|7]\d{6}\([\d]\)$/
8.台湾居民身份证
/**
* 1)10位:1位大写字母 + 9位阿拉伯数字
*/
/^[A-Z]\d{9}$/
9.外国人永久居留身份证
/**
* 1)15位:前三位是大写英文字母
*/
/^[A-Z]{3}[0-9]{12}$/
10.往来港澳通行证
/**
* 1)9位:C+8位阿拉伯数字
* 1)9位:C+英文字母(I/O除外)+7位阿拉伯数字
*/
/^[C]\d{8}$|^[C][a-hA-Hj-nJ-Np-zP-Z][0-9]{7}$/
11.往来台湾通行证
/**
* 1)9位:L+8位阿拉伯数字
*/
/^[L]\d{8}$/
手机号
1.大陆手机号
/^1\d{10}$/
邮箱
/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/
传真电话
/^\d{1,5}([-]{1}\d{1,32})+$/