身份证号码及统一社会信用代码校验
/**
* 身份证号码验证
* rule为form表单当前验证的filed对应的验证rule规则
* value为当前输入框返回值
* callback为回调函数,验证成功直接回调,验证失败回调函数返回一个带错误信息的Error实例
*/
/*** 身份证号码验证* rule为form表单当前验证的filed对应的验证rule规则* value为当前输入框返回值* callback为回调函数,验证成功直接回调,验证失败回调函数返回一个带错误信息的Error实例*/
export function IDCard(rule, value, callback) {if (!value) {callback()} else {const area = {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: '国外'}let Ylet JYMlet Slet Mlet idCardArray = []idCardArray = value.split('')if (area[parseInt(value.substr(0, 2))] === null) {callback(new Error('身份证号码地区非法'))}let ereg// 身份号码位数及格式检验switch (value.length) {case 15:if ((parseInt(value.substr(6, 2)) + 1900) % 4 === 0 ||((parseInt(value.substr(6, 2)) + 1900) % 100 === 0 && (parseInt(value.substr(6, 2)) + 1900) %4 === 0)) {ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/// 测试出生日期的合法性} else {ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/// 测试出生日期的合法性}if (ereg.test(value)) {callback()} else {callback(new Error('身份证号码出生日日期有误'))}breakcase 18:// 18位身份号码检测// 出生日期的合法性检查// 闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))// 平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))if (parseInt(value.substr(6, 4)) % 4 === 0 ||(parseInt(value.substr(6, 4)) % 100 === 0 && parseInt(value.substr(6, 4)) %4 === 0)) {ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/// 闰年出生日期的合法性正则表达式} else {ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/// 平年出生日期的合法性正则表达式}if (ereg.test(value)) { // 测试出生日期的合法性// 计算校验位S = ((parseInt(idCardArray[0]) + parseInt(idCardArray[10])) * 7) +((parseInt(idCardArray[1]) + parseInt(idCardArray[11])) * 9) +((parseInt(idCardArray[2]) + parseInt(idCardArray[12])) * 10) +((parseInt(idCardArray[3]) + parseInt(idCardArray[13])) * 5) +((parseInt(idCardArray[4]) + parseInt(idCardArray[14])) * 8) +((parseInt(idCardArray[5]) + parseInt(idCardArray[15])) * 4) +((parseInt(idCardArray[6]) + parseInt(idCardArray[16])) * 2) +(parseInt(idCardArray[7]) * 1) +(parseInt(idCardArray[8]) * 6) +(parseInt(idCardArray[9]) * 3)Y = S % 11M = 'F'JYM = '10X98765432'M = JYM.substr(Y, 1)// 判断校验位if (M === idCardArray[17]) {callback()} else {callback(new Error('身份证号码末位校验位校验出错,请注意x的大小写'))}} else {callback(new Error('身份证号码出生日期有误'))}breakdefault:callback(new Error('身份证号码位数不对,应该为15位或是18位'))break}}
}
// 自定义校验规则validateIdNumber(rule, value, callback) {const idNumberRegex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;if (!idNumberRegex.test(value)) {callback(new Error('请输入有效的身份证号码'));} else {callback();}},
/**
* 统一信用证代码
* rule为form表单当前验证的filed对应的验证rule规则
* value为当前输入框返回值
* callback为回调函数,验证成功直接回调,验证失败回调函数返回一个带错误信息的Error实例
*/
/*** 统一信用证代码* rule为form表单当前验证的filed对应的验证rule规则* value为当前输入框返回值* callback为回调函数,验证成功直接回调,验证失败回调函数返回一个带错误信息的Error实例*/
export function socialCreditCode(rule, value, callback) {if (value.length == 18) {var isNumberOrCode = /^[0-9A-HJ-NP-RTUW-Y]+$/;var isNumber = /^[0-9]+$/;if (!isNumberOrCode.test(value.charAt(0))) {callback(new Error("第1位必须为阿拉伯数字或大写字母(不适用I、O、Z、S、V)"));} else if (!isNumberOrCode.test(value.charAt(1))) {callback(new Error("第2位必须为阿拉伯数字或大写字母(不适用I、O、Z、S、V)"));} else if (!isNumber.test(value.substr(2, 6))) {callback(new Error("第3-8位必须全部为阿拉伯数字"));} else if (!isNumberOrCode.test(value.charAt(17))) {callback(new Error("第18位必须为阿拉伯数字或大写字母(不适用I、O、Z、S、V)"));} else {var newValue = value.substr(8, 8) + "-" + value.substr(16, 1)if (newValue == '00000000-0') {callback(new Error('请输入正确格式组织机构代码'));}var financecode = new Array();financecode[0] = newValue.charCodeAt(0);financecode[1] = newValue.charCodeAt(1);financecode[2] = newValue.charCodeAt(2);financecode[3] = newValue.charCodeAt(3);financecode[4] = newValue.charCodeAt(4);financecode[5] = newValue.charCodeAt(5);financecode[6] = newValue.charCodeAt(6);financecode[7] = newValue.charCodeAt(7);financecode[8] = newValue.charCodeAt(8);financecode[9] = newValue.charCodeAt(9);var wi = new Array();wi[0] = 3;wi[1] = 7;wi[2] = 9;wi[3] = 10;wi[4] = 5;wi[5] = 8;wi[6] = 4;wi[7] = 2;if (financecode[8] != 45) {callback(new Error('请输入正确格式组织机构代码'));}for (var i = 0; i < 10; i++) {if (financecode[i] <= 122 && financecode[i] >= 97) {callback(new Error('请将小写转换为大写'));}var ci = new Array();var s = 0;for (var j = 0; j < 8; j++) {if (financecode[j] < 48 || financecode[j] > 57) {callback(new Error('请输入正确格式组织机构代码'));}ci[j] = financecode[j] - 48;s += wi[j] * ci[j];}var c = 11 - s % 11;if (c == 10) {c = 'X';} else if (c == 11) {c = 0;}var checkValue = newValue.charAt(9);if (c != checkValue) {callback(new Error('请输入正确格式组织机构代码'));}callback();}}} else {callback(new Error("统一社会信用代码必须为18位"));}
}
validateCreditCode(rule, value, callback) {const reg = /^[0-9A-Z]{18}$/;if (value && !reg.test(value)) {callback(new Error());} else {callback();}}
身份证号码及统一社会信用代码校验相关推荐
- 全网唯一正确身份证和社统一社会信用代码自定义表单校验器(身份证校验和社统一社会信用代码校验)
话不多说,直入正题: 1.工具类: import * as moment from 'moment'; import {isUndefined} from 'util'; import {Abstra ...
- 身份证号与统一社会信用代码的校验
身份证号与统一社会信用代码的表单校验 一.校验身份证号 <el-form ref="form" :model="form" :rules="ru ...
- 组织机构代码和统一社会信用代码校验规则以及java校验工具类
组织机构代码 编码规则编辑 1.全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成. 本体代码采用系列(即分区段)顺序编码方法. 校验码按照以下公式计算: C9 ...
- Python实现统一社会信用代码校验(GB32100-2015)
Python实现统一社会信用代码校验 统一社会信用代码国标校验 统一社会信用代码国标校验规则 示例说明 Python代码实现(仅实现GB- 32100-2015中的规则) 统一社会信用代码国标校验 ...
- JAVA 身份证校验与统一社会信用代码校验
B话少说,上代码 原理默认大家都懂了,不懂的话可以百度一下 package com.microlinktech.rns.util;import lombok.Getter; import lombok ...
- 小程序正则验证 身份证号、统一社会信用代码
公共方法封装 // util.js页面,封装的公共方法/*** 去掉字符串头尾空格*/ function trim(str) {return str.replace(/(^\s*)|(\s*$)/g, ...
- 实现统一社会信用代码校验
社会信用代码:由18位数字和大写的字母组成,第1位是登记管理部门代码,第2位是机构类别代码,第3~8位登记管理机关行政区划码,第9~17位主休标识码,第18位校验码.有五个部分组成. 具体详情请点击: ...
- hive自定义函数实现组织机构代码、统一社会信用代码校验
一.根据中华人民共和国国家标准全国组织机构代码(9位)编制规则实现规则校验 1.组织机构代码编码规则 1.1组织机构代码的组成 全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉 ...
- 全国组织机构统一社会信用代码校验 - Java 版
主要是网上错误的代码太多,为了避免大家踩坑,特此更正,详细规则如下: GB 32100-2015 法人和其他组织统一社会信用代码编码规则 private static final String BAS ...
最新文章
- java 空指针异常(java.lang.NullPointerException)
- Takeown--夺取文件or文件夹所有权
- 捋一捋js面向对象的继承问题
- python模块之hashlib
- Vue-Router中History模式【华为云分享】
- .net core下简单构建高可用服务集群
- 里计算两个数的总和_发动机排量怎样计算?懂这个的修理工真嘀很少!
- mysql 数据库优化
- Python爬虫爬取豆瓣图书的信息和封面,放入MySQL数据库中。
- 【lomoyi笔记】2020.7.31VMware虚拟机安装黑苹果macOS Catalina10.15
- 计算机磁盘怎么清理,电脑磁盘已满怎么清理_电脑磁盘不足怎么清理
- 左耳朵耗子 | 技术人员的发展之路
- 图片信息用浏览器显示:data:image/png;base64,+图片内容
- java170道面试题汇总+详细解析
- 使用vmdk文件创建虚拟机
- sockaddr_in和sockaddr区别
- csdn怎么搜索收藏夹
- 华为老总身份彻底曝光,全世界感到害怕!
- ie11 开发者工具
- 三自由度机器人运动学matlab仿真实验报告,3自由度机器人的正运动学建模研究...