初始化商家端

This commit is contained in:
wangxiaowei
2025-04-30 14:08:39 +08:00
commit 68b408b1e7
568 changed files with 118884 additions and 0 deletions

109
common/utils/validate.js Normal file
View File

@ -0,0 +1,109 @@
const validate = (value, vtype,lgh) => {
// 自定义正则校验
if ('regular' === vtype) {
return lgh.test(value);
}
//长度校验
if(vtype === 'length'){
let val = lgh.split(',')
let len = value.length
if (val.length == 1){
return val == len
} else {
return len >= val[0] && len <= val[1]
}
}
if ('require' === vtype) {
return !!value;
}
if ('phone' === vtype) {
return /^1[3-9]\d{9}$/.test(value);
}
// 验证码
if ('captcha' === vtype) {
return /^[0-9]{4,6}$/.test(value);
}
// 不知道干啥的
if ('isnumber' === vtype) {
return /^[0-9]{5,11}$/.test(value);
}
if ('isqq' === vtype) {
return /^[1-9][0-9]{4,10}$/.test(value);
}
// 身份证号码验证不准确
if ('idcard' === vtype) {
return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value);
}
if ('password' === vtype) {
return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9a-zA-Z]{6,12}$/.test(value);
}
// 邀请码验证
if ('invitecode' === vtype) {
return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9a-zA-Z]$/.test(value);
}
// 判断不准确 比如123.
if ('ismoney' === vtype) {
return /^(([1-9]\d*)|\d)(\.\d{1,2})?$/.test(value);
}
if ('email' === vtype) {
// return /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value);
return /^[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}$/.test(value);
}
if ('url' === vtype) {
return /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(value);
}
if ('paragraph' === vtype) {
return /^[A-Z0-9]{18}$/.test(value);
}
// 银行卡验证
if ('card' === vtype) {
let bankno = value;
let lastNum = bankno.substr(bankno.length - 1, 1); //取出最后一位与luhm进行比较
let first15Num = bankno.substr(0, bankno.length - 1); //前15或18位
let newArr = [];
// 前15或18位倒序存进数组
for (let i = first15Num.length - 1; i > -1; i--) newArr.push(first15Num.substr(i, 1));
let arrJiShu = []; // 奇数位*2的积 <9
let arrJiShu2 = []; // 奇数位*2的积 >9
let arrOuShu = []; // 偶数位数组
for (let 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]); // 偶数位
}
let jishu_child1 = []; //奇数位*2 >9 的分割之后的数组个位数
let jishu_child2 = []; //奇数位*2 >9 的分割之后的数组十位数
for (let h = 0; h < arrJiShu2.length; h++) {
jishu_child1.push(parseInt(arrJiShu2[h]) % 10);
jishu_child2.push(parseInt(arrJiShu2[h]) / 10);
}
let sumJiShu = 0; //奇数位*2 < 9 的数组之和
let sumOuShu = 0; //偶数位数组之和
let sumJiShuChild1 = 0; //奇数位*2 >9 的分割之后的数组个位数之和
let sumJiShuChild2 = 0; //奇数位*2 >9 的分割之后的数组十位数之和
let sumTotal = 0;
for (let m = 0; m < arrJiShu.length; m++) sumJiShu = sumJiShu + parseInt(arrJiShu[m]);
for (let n = 0; n < arrOuShu.length; n++) sumOuShu = sumOuShu + parseInt(arrOuShu[n]);
for (let 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);
//计算Luhm值
let k = parseInt(sumTotal) % 10 == 0 ? 10 : parseInt(sumTotal) % 10;
let luhm = 10 - k;
return lastNum == luhm;
}
}
export {
validate
};