vimo-dt
Version:
A Vue2.x UI Project For Mobile & HyBrid
188 lines (167 loc) • 5.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = {
integer: {
type: 'number',
regexp: /^-?[1-9]\d*$/
},
positiveInteger: {
type: 'number',
regexp: /^[1-9]\d*$/
},
negativeInteger: {
type: 'number',
regexp: /^-[1-9]\d*$/
},
email: {
type: 'email',
regexp: /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/
},
ip: {
type: 'number',
regexp: /(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)/
},
idCard: {
type: 'text',
regexp: function regexp(num) {
if (!num) return false;
num = num.toUpperCase();
var cityCode = {
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: '国外 '
};
if (!cityCode[num.substr(0, 2)]) {
if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {
console.log('地址编码错误');
}
return false;
}
if (!/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num)) {
if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {
console.log('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。');
}
return false;
}
var re, len, arrSplit, dtmBirth, bGoodDay, arrInt, arrCh, nTemp, k;
len = num.length;
if (len === 15) {
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
arrSplit = num.match(re);
dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
bGoodDay = dtmBirth.getYear() === Number(arrSplit[2]) && dtmBirth.getMonth() + 1 === Number(arrSplit[3]) && dtmBirth.getDate() === Number(arrSplit[4]);
if (!bGoodDay) {
if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {
console.log('输入的身份证号里出生日期不对!');
}
return false;
} else {
arrInt = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
arrCh = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
nTemp = 0;
num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
for (k = 0; k < 17; k++) {
nTemp += num.substr(k, 1) * arrInt[k];
}
num += arrCh[nTemp % 11];
return true;
}
}
if (len === 18) {
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
arrSplit = num.match(re);
dtmBirth = new Date(arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
bGoodDay = dtmBirth.getFullYear() === Number(arrSplit[2]) && dtmBirth.getMonth() + 1 === Number(arrSplit[3]) && dtmBirth.getDate() === Number(arrSplit[4]);
if (!bGoodDay) {
if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {
console.log('输入的身份证号里出生日期不对!');
}
return false;
} else {
var valnum;
arrInt = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
arrCh = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
nTemp = 0;
for (k = 0; k < 17; k++) {
nTemp += num.substr(k, 1) * arrInt[k];
}
valnum = arrCh[nTemp % 11];
if (valnum !== num.substr(17, 1)) {
if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {
console.log('18位身份证的校验码不正确!应该为:' + num.substr(17, 1) + '->' + valnum);
}
return false;
}
return true;
}
}
return false;
}
},
password: {
type: 'password',
regexp: /^[a-zA-Z]\w{5,17}$/
},
tel: {
type: 'tel',
regexp: /^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$/
},
mobile: {
type: 'tel',
regexp: /^((13[0-9])|(14[0-9])|(15[0-9])|(18[0-9])|(17[0-9]))\d{8}$/
},
cn: {
type: 'text',
regexp: /[\u4e00-\u9fa5]/
},
securityCode: {
type: 'number',
regexp: /^\d{4,}$/
},
nickName: {
type: 'text',
regexp: /[A-Za-z0-9_\-\u4e00-\u9fa5]+/
},
qq: {
type: 'number',
regexp: /^[1-9][0-9]{4,}$/
},
url: {
type: 'url',
regexp: /^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+/
}
};