nxdt-uniapp/utils/regular.js

105 lines
3.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 密码正则校验
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, '')
}