1.手机号 /^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0-9])|(17[0-9])|(19[0-9]))\d{8}$/
2.邮箱 /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
3.密码正则 6-14位
export const pPattern = /^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*.]{8,20}$/
4.银行卡号
luhnCheck (bankno) {
var lastNum = bankno.substr(bankno.length - 1, 1) // 取出最后一位(与luhn进行比较)
var first15Num = bankno.substr(0, bankno.length - 1) // 前15或18位
var newArr = new Array()
for (var i = first15Num.length - 1; i > -1; i--) { // 前15或18位倒序存进数组
newArr.push(first15Num.substr(i, 1))
}
var arrJiShu = new Array() // 奇数位*2的积 <9
var arrJiShu2 = new Array() // 奇数位*2的积 >9
var arrOuShu = new Array() // 偶数位数组
for (var j = 0; j < newArr.length; j++) {
if ((j + 1) % 2 == 1) { // 奇数位
if (parseInt(newArr[j]) * 2 < 9) arrJiShu.push(parseInt(newArr[j]) * 2)
else arrJiShu2.push(parseInt(newArr[j]) * 2)
} else // 偶数位
{ arrOuShu.push(newArr[j]) }
}
var jishu_child1 = new Array() // 奇数位*2 >9 的分割之后的数组个位数
var jishu_child2 = new Array() // 奇数位*2 >9 的分割之后的数组十位数
for (var h = 0; h < arrJiShu2.length; h++) {
jishu_child1.push(parseInt(arrJiShu2[h]) % 10)
jishu_child2.push(parseInt(arrJiShu2[h]) / 10)
}
var sumJiShu = 0 // 奇数位*2 < 9 的数组之和
var sumOuShu = 0 // 偶数位数组之和
var sumJiShuChild1 = 0 // 奇数位*2 >9 的分割之后的数组个位数之和
var sumJiShuChild2 = 0 // 奇数位*2 >9 的分割之后的数组十位数之和
var sumTotal = 0
for (var m = 0; m < arrJiShu.length; m++) {
sumJiShu = sumJiShu + parseInt(arrJiShu[m])
}
for (var n = 0; n < arrOuShu.length; n++) {
sumOuShu = sumOuShu + parseInt(arrOuShu[n])
}
for (var p = 0; p < jishu_child1.length; p++) {
sumJiShuChild1 = sumJiShuChild1 + parseInt(jishu_child1[p])
sumJiShuChild2 = sumJiShuChild2 + parseInt(jishu_child2[p])
}
// 计算总和
sumTotal = parseInt(sumJiShu) + parseInt(sumOuShu) + parseInt(sumJiShuChild1) + parseInt(sumJiShuChild2)
// 计算luhn值
var k = parseInt(sumTotal) % 10 == 0 ? 10 : parseInt(sumTotal) % 10
var luhn = 10 - k
if (lastNum == luhn) {
// $("#banknoInfo").html("luhn验证通过");
return true
} else {
// $("#banknoInfo").html("银行卡号必须符合luhn校验");
return false
}
},
5.身份证号码检验规则(checkID ())
// 身份证号码检验规则
var checkCode = function (val) {
var p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
var code = val.substring(17)
if (p.test(val)) {
var sum = 0
for (var i = 0; i < 17; i++) {
sum += val[i] * factor[i]
}
if (parity[sum % 11] == code.toUpperCase()) {
return true
}
}
return false
}
var checkDate = function (val) {
var pattern = /^(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)$/
if (pattern.test(val)) {
var year = val.substring(0, 4)
var month = val.substring(4, 6)
var date = val.substring(6, 8)
var date2 = new Date(year + '-' + month + '-' + date)
if (date2 && date2.getMonth() == (parseInt(month) - 1)) {
return true
}
}
return false
}
var checkProv = function (val) {
var pattern = /^[1-9][0-9]/
var provs = { 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: '澳门' }
if (pattern.test(val)) {
if (provs[val]) {
return true
}
}
return false
}
export function checkID (val) {
if (checkCode(val)) {
var date = val.substring(6, 14)
if (checkDate(date)) {
if (checkProv(val.substring(0, 2))) {
return true
}
}
}
return false
}