105 lines
3.4 KiB
JavaScript
105 lines
3.4 KiB
JavaScript
// 密码正则校验
|
||
export function regPassword(password) {
|
||
const reg = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!@#$%^&*()\-_=+{};:,<.>]).{8,26}$/
|
||
return reg.test(password)
|
||
}
|
||
|
||
export function checkIdCardNumber(rule, idcard, callback) {
|
||
if (idcard === undefined || idcard === '' || idcard === null) {
|
||
return callback(new Error('请输入身份证号码'))
|
||
}
|
||
var area = {
|
||
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 ereg
|
||
var idcard_array = idcard.split('')
|
||
// @ts-ignore
|
||
if (area[parseInt(idcard.substr(0, 2))] === null) return callback(new Error('身份证地区非法'))
|
||
switch (idcard.length) {
|
||
case 18:
|
||
if (
|
||
parseInt(idcard.substr(6, 4)) % 4 == 0 ||
|
||
(parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0)
|
||
) {
|
||
ereg =
|
||
/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/
|
||
//闰年出生日期的合法性正则表达式
|
||
} else {
|
||
ereg =
|
||
/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/
|
||
//平年出生日期的合法性正则表达式
|
||
}
|
||
if (ereg.test(idcard)) {
|
||
var S =
|
||
(parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 +
|
||
(parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 +
|
||
(parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 +
|
||
(parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 +
|
||
(parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 +
|
||
(parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 +
|
||
(parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 +
|
||
parseInt(idcard_array[7]) * 1 +
|
||
parseInt(idcard_array[8]) * 6 +
|
||
parseInt(idcard_array[9]) * 3
|
||
var Y = S % 11
|
||
var M = 'F'
|
||
var JYM = '10X98765432'
|
||
M = JYM.substr(Y, 1)
|
||
if (M == idcard_array[17]) return callback()
|
||
else return callback(new Error('身份证号码校验错误'))
|
||
} else return callback(new Error('身份证号码出生日期超出范围或含有非法字符'))
|
||
default:
|
||
return callback(new Error('身份证号码位数不对'))
|
||
}
|
||
}
|
||
export function checkPhone(rule, value, callback) {
|
||
let reg = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/
|
||
if (!value) {
|
||
return callback(new Error('手机号码不能为空'))
|
||
} else if (!reg.test(value)) {
|
||
return callback(new Error('手机号格式不正确'))
|
||
} else {
|
||
callback()
|
||
}
|
||
}
|
||
|
||
// 过滤手机输入的特殊字符
|
||
export function filterInput(value) {
|
||
value = String(value)
|
||
return value.replace(/[^\u4E00-\u9FA5A-Za-z0-9_\-\s\(\)!@#$%^&*()-=+{};:,<.>/?|\\[\]~,。、;?`]/g, '')
|
||
}
|