这篇之后就记录一下,项目中用到的校验规则把,方便之后在遇到了,直接拿来用
(社会信用代码,身份证号,手机号)目前这么多,之后用了在补!
社会信用代码
/submit.vue 页面引入
import { isvalidPhone, CheckSocialCreditCode } from '@/assets/js/validate.js';
应用:
1:手机号
let validPhone = (rule, value, callback) => {
if (!value) {
callback(new Error('请输入电话号码'));
} else if (!isvalidPhone(value)) {
callback(new Error('请输入正确的11位手机号码'));
} else {
callback();
}
};
2:社会信用代码
let cheackCreditCode = (rule, value, callback) => {
if (!value) {
return callback(new Error('统一社会信用代码不能为空'));
}
setTimeout(() => {
if (CheckSocialCreditCode(value.trim()) === true) {
callback();
} else {
callback(new Error('请输入正确的统一社会信用代码'));
}
}, 100);
};
validate.js
// 判断电话号码
export function isExternal(path) {
return /^(https?:|mailto:|tel:)/.test(path);
}
export function isvalidPhone(str) {
const reg = /^1[3|4|5|7|8][0-9]\d{8}$/;
return reg.test(str);
}
// 判断统一社会信用代码 (正确示例)9135052155323005XL
export function CheckSocialCreditCode(Code) {
let patrn = /^[0-9A-Z]+$/; // 18位校验及大写校验
if (Code.length !== 18 || patrn.test(Code) === false) {
return false;
} else {
let Ancode; // 统一社会信用代码的每一个值
let Ancodevalue; // 统一社会信用代码每一个值的权重
let total = 0;
let weightedfactors = [
1,
3,
9,
27,
19,
26,
16,
17,
20,
29,
25,
13,
8,
24,
10,
30,
28
]; // 加权因子
let str = '0123456789ABCDEFGHJKLMNPQRTUWXY'; // 不用I、O、S、V、Z
for (let i = 0; i < Code.length - 1; i++) {
Ancode = Code.substring(i, i + 1);
Ancodevalue = str.indexOf(Ancode);
total = total + Ancodevalue * weightedfactors[i]; // 权重与加权因子相乘之和
}
let logiccheckcode = 31 - (total % 31);
if (logiccheckcode === 31) {
logiccheckcode = 0;
}
let Str =
'0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,T,U,W,X,Y';
let Array_Str = Str.split(',');
logiccheckcode = Array_Str[logiccheckcode];
let checkcode = Code.substring(17, 18);
if (logiccheckcode !== checkcode) {
console.log(123);
return false;
}
return true;
}
}