/**

* 身份证号码验证

* 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. 全网唯一正确身份证和社统一社会信用代码自定义表单校验器(身份证校验和社统一社会信用代码校验)

    话不多说,直入正题: 1.工具类: import * as moment from 'moment'; import {isUndefined} from 'util'; import {Abstra ...

  2. 身份证号与统一社会信用代码的校验

    身份证号与统一社会信用代码的表单校验 一.校验身份证号 <el-form ref="form" :model="form" :rules="ru ...

  3. 组织机构代码和统一社会信用代码校验规则以及java校验工具类

    组织机构代码 编码规则编辑 1.全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成. 本体代码采用系列(即分区段)顺序编码方法. 校验码按照以下公式计算: C9 ...

  4. Python实现统一社会信用代码校验(GB32100-2015)

    Python实现统一社会信用代码校验 统一社会信用代码国标校验 统一社会信用代码国标校验规则 示例说明 Python代码实现(仅实现GB- 32100-2015中的规则) 统一社会信用代码国标校验   ...

  5. JAVA 身份证校验与统一社会信用代码校验

    B话少说,上代码 原理默认大家都懂了,不懂的话可以百度一下 package com.microlinktech.rns.util;import lombok.Getter; import lombok ...

  6. 小程序正则验证 身份证号、统一社会信用代码

    公共方法封装 // util.js页面,封装的公共方法/*** 去掉字符串头尾空格*/ function trim(str) {return str.replace(/(^\s*)|(\s*$)/g, ...

  7. 实现统一社会信用代码校验

    社会信用代码:由18位数字和大写的字母组成,第1位是登记管理部门代码,第2位是机构类别代码,第3~8位登记管理机关行政区划码,第9~17位主休标识码,第18位校验码.有五个部分组成. 具体详情请点击: ...

  8. hive自定义函数实现组织机构代码、统一社会信用代码校验

    一.根据中华人民共和国国家标准全国组织机构代码(9位)编制规则实现规则校验 1.组织机构代码编码规则 1.1组织机构代码的组成 全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉 ...

  9. 全国组织机构统一社会信用代码校验 - Java 版

    主要是网上错误的代码太多,为了避免大家踩坑,特此更正,详细规则如下: GB 32100-2015 法人和其他组织统一社会信用代码编码规则 private static final String BAS ...

最新文章

  1. java 空指针异常(java.lang.NullPointerException)
  2. Takeown--夺取文件or文件夹所有权
  3. 捋一捋js面向对象的继承问题
  4. python模块之hashlib
  5. Vue-Router中History模式【华为云分享】
  6. .net core下简单构建高可用服务集群
  7. 里计算两个数的总和_发动机排量怎样计算?懂这个的修理工真嘀很少!
  8. mysql 数据库优化
  9. Python爬虫爬取豆瓣图书的信息和封面,放入MySQL数据库中。
  10. 【lomoyi笔记】2020.7.31VMware虚拟机安装黑苹果macOS Catalina10.15
  11. 计算机磁盘怎么清理,电脑磁盘已满怎么清理_电脑磁盘不足怎么清理
  12. 左耳朵耗子 | 技术人员的发展之路
  13. 图片信息用浏览器显示:data:image/png;base64,+图片内容
  14. java170道面试题汇总+详细解析
  15. 使用vmdk文件创建虚拟机
  16. sockaddr_in和sockaddr区别
  17. csdn怎么搜索收藏夹
  18. 华为老总身份彻底曝光,全世界感到害怕!
  19. ie11 开发者工具
  20. 三自由度机器人运动学matlab仿真实验报告,3自由度机器人的正运动学建模研究...

热门文章

  1. 计算机期刊及会议投稿指南
  2. NLPKGOthers会议投稿
  3. 必看的电商报 “朋克养生”成主流,90后开始吃保健品了
  4. 狭义相对论(时间膨胀和长度收缩)
  5. K8S使用持久化卷存储到NFS(NAS盘)
  6. 采购单ME21N增强控制行文本必输
  7. 【postgresql】role root does not exist 解决办法
  8. python中gettext文件格式_如何将gettext .mo文件转换为.po文件 - python
  9. ffmpeg转换mp3的实现
  10. 物联网设备的分类及未来发展中存在的问题有哪些?