Vue+iView身份证、统一社会信用编码校验
身份证校验export default {data() {const IdCardNum= (rule, value, callback) => {//非空校验if(!value){return callback(new...
·
身份证校验
export default {
data() {
const IdCardNum= (rule, value, callback) => {
//非空校验
if(!value){
return callback(new Error('请输入身份证号!'));
}
//长度校验
if(value.length!=18){
return callback(new Error('输入有误,身份证号长度需为18位!'));
}
//格式和日期校验
let pattern = /^\d{6}(1[8-9]|[2-9][0-9])\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}(\d|X)$/;
if(!pattern.test(value)){
return callback(new Error('输入有误,请检查身份证号格式!'));
}
//省份地址编码校验
var city = {
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(!city[value.substr(0,2)]){
return callback(new Error('输入有误,请检查身份证号地址编码是否正确!'));
}
//最后一位校验码校验
if (value.length == 18) {
value = value.split('');
//∑(ai×Wi)(mod 11)
//加权因子
let factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
//校验位
let parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
let sum = 0;
let ai = 0;
let wi = 0;
for (let i = 0; i < 17; i++) {
ai = value[i];
wi = factor[i];
sum += ai * wi;
}
let last = parity[sum % 11];
if (last != value[17]) {
return callback(new Error('校验失败,请输入正确的身份证号!'));
}
}
return callback();
};
IdCardNum: [
{ required: true, message: "法人身份证号不能为空.", trigger: "blur" },
{
type: "string",
max: 18,
min: 18,
pattern:/^\d{6}(1[8-9]|[2-9][0-9])\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/,
message: "请输入正确的身份证号",
trigger: "blur"
},
{ validator: validIdCardNum, trigger: 'blur' }
],
统一社会信用编码校验
const validlegalbizLicNum= (rule, value, callback) => {
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];//加权因子
//不用I、O、S、V、Z
let str = '0123456789ABCDEFGHJKLMNPQRTUWXY';
for (let i = 0; i < value.length - 1; i++) {
Ancode = value.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 = value.substring(17, 18);
if (logiccheckcode != checkcode) {
return callback(new Error('校验失败,请输入正确的统一社会信用代码!'));;
}
return callback();
};
bizLicNum: [
{ required: true, message: "统一社会信用代码不能为空.", trigger: "blur" },
{
type: "string",
max: 18,
message: "输入有误,统一社会信用代码长度需为18位",
trigger: "change"
},
{
type: "string",
/*
统一社会信用代码由十八位的阿拉伯数字或大写英文字母(不使用I、O、Z、S、V)组成。
第1位:登记管理部门代码(共一位字符)登记管理部门代码:使用阿拉伯数字或大写英文字母表示。
第2位:机构类别代码(共一位字符)
第3位~第8位:登记管理机关行政区划码(共六位阿拉伯数字)
第9位~第17位:主体标识码(组织机构代码)(共九位字符)
第18位:校验码(共一位字符)
*/
/* pattern: /[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}/g,*/
pattern: /^([1,5,9][1,2,3,9]|[2,3,4,6,7,8,A,B,C,D,E,G,Y]1)\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/,
message: "请输入正确的统一社会信用代码",
trigger: "blur"
},
{ validator: validlegalbizLicNum, trigger: 'blur' }
],
更多推荐
已为社区贡献2条内容
所有评论(0)