统一社会信用代码规则

  1. 由18位的阿拉伯数字或大写英文字母(不使用I、O、Z、S、V)组成;
    第1位~第2位、第9位~第18位

    [0-9A-HJ-NP-RT-UW-Y]
  2. 第3位~第8位,由阿拉伯数字表示;
    [0-9]{6}
  3. 第18位校验码,按照公式计算得出;

代码

function isUnifiedSocialCreditCode(code, loose=false){if(!code || code.length !== 18) return false;// 正则:1-2位=>数字或者字母;3-8位=>数字;9-18位=>数字或者字母const pattern = /^([0-9A-HJ-NP-RT-UW-Y]){2}([0-9]){6}([0-9A-HJ-NP-RT-UW-Y]{10})$/;if(!pattern.test(code)){return false;}// 如果是宽松校验,此时返回trueif(loose){return true;}// 严格校验,开始校验第18位的校验码let code17 = code.substr(0,17); // 截取前17位let code18 = code.substr(17,1); // 第18位校验码// 加权因子const WEIGHT_FACTORS = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];// 字符集,数组下标表示数值const CHARACTER_SET = ['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 codeList = code17.split('');let sum = 0;codeList.forEach((ele, i)=>{let index = CHARACTER_SET.findIndex(row=>row==ele);sum += (index * WEIGHT_FACTORS[i])})// 求余数let MOD = sum%31;// 求校验码let checkCode = CHARACTER_SET[31 - MOD];return checkCode == code18
}let codeQuJuDe = '91110000101623741K'; // 测试全聚德信用码
let changFengHospital = '911101066976941872'; // 测试北京长峰医院信用码
let xiaMen = '91350211M0000XUF46'; // 厦门云上晴空航空科技有限公司,这个虽然是正常存在的,但是校验不通过console.log(isUnifiedSocialCreditCode(codeQuJuDe)); // true
console.log(isUnifiedSocialCreditCode(changFengHospital)); // trueconsole.log(isUnifiedSocialCreditCode(xiaMen)); // false
console.log(isUnifiedSocialCreditCode(xiaMen, true)); // true

异常

按照国标,校验《厦门云上晴空航空科技有限公司》公司的信用码91350211M0000XUF46,但是校验不通过。因此引入宽松校验,宽松校验不校验第18位的校验码。

国标摘要

统一代码由十八位的阿拉伯数字或大写英文字母(不使用I、O、Z、S、V)组成,包括第一位等级管理部门代码、第2位机构类别代码、第3位~第8位登记管理机关行政区划码、第9位-第17位主体标志码、第18位校验码五个部分。

代码序号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

代码

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

x

说明

登记管理部门代码1位

机构类别代码1位

登记管理机关行政区划码6位

主体标识码(组织机构代码)9位

校验码1位

规则

数字或者大写英文字母

数字

数字或者大写英文字母

代码字符集:

0~9

A

B

C

D

E

F

G

H

J

K

L

M

N

P

Q

R

T

U

W

X

Y

0~9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

参考资料

国标在线https://www.samr.gov.cn/djzcj/zyfb/zjfb/201612/t20161208_282195.html

前端校验统一社会信用代码相关推荐

  1. JS校验统一社会信用代码的真实性

    统一代码的构成 结构 代码及说明 统一社会信用代码来源字符与数值对应关系表 统一社会信用代码相应顺序上对应的加权因子 计算示例 js代码实现 统一社会信用代码:每一个法人和其他组织在全国范围内唯一的. ...

  2. java、正则表达式、php校验“统一社会信用代码”

    java import java.util.HashMap; import java.util.Map; /** * Desc: 社会信用代码证 检验 * Created  2016/5/18. */ ...

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

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

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

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

  5. JAVA生成统一社会信用代码和组织机构代码

    统一社会信用代码规则如下: 代码如下: 引入jar包下载:https://mvnrepository.com/artifact/cn.hutool/hutool-all/5.8.3 package c ...

  6. 统一社会信用代码的编码格式以及js正则校验

    统一社会信用代码 统一社会信用代码正则:/^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/ // 返回值为true或false functio ...

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

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

  8. Python实现统一社会信用代码合法性校验

    Python实现统一社会信用代码合法性校验 1 统一代码的构成 1.1 结构 ​ 统一代码由十八位的阿拉伯数字或大写英文字母(不使用I.O.Z.S.V)组成,包括第1位登记管理部门代码.第2位机构类别 ...

  9. 使用Java校验【统一社会信用代码】真假

    统一社会信用代码校验规则: 定义一个方法判断统一社会信用代码真假: /*** 验证机构代码真假** @param orgCode 组织机构信用代码* @return 真返回true 假返回false* ...

最新文章

  1. 用Java实现单向链表
  2. SOCKET是调用操作系统通信服务的一种机制
  3. vscode中文设置不生效_VSCode详细安装教程
  4. C/C++ 进程的探索(fork函数)
  5. 408计算机先学哪个,408计算机统考各科难度分析
  6. matlab 图像常用函数
  7. Web前端三大主流框架是什么?Web前端前景与就业形势
  8. cownew开源-cownewStudio抢先预览
  9. 一纬度横直线等于多公里_【高中物理】必修一知识点总结
  10. 泊松分布的期望和方差推导
  11. Hadoop培训视频教程
  12. CSS中的四种定位以及top和margin-top的区别
  13. [prometheus]Step11-prometheus动态监控服务器端口并告警
  14. 蚂蚁金服上市估值2k亿美金!会开发到底有多吃香?
  15. Word2Vec词向量模型代码
  16. 如何向公众号添加的文档的链接
  17. 亚马逊FBA标签打印技巧(深圳风火轮amazon团队)
  18. 菜鸟的经历和今后目标
  19. 5G的NSA和SA,到底啥意思?
  20. php nts,wamp 环境中的nts php 配置方式

热门文章

  1. win10 添加右键 cmd(管理员)
  2. 关于pip更新没有反应更新失败的问题。——python成长之路
  3. Qt6 QML Book/多媒体/播放媒体
  4. redis 清空缓存
  5. ggplot2绘制气泡图+分类+趋势线
  6. F. Easy Fix
  7. springBoot yml redis配置文件
  8. C语言栈的应用——后缀表达式求值
  9. 消息队列的实现原理和ActiveMQ详解
  10. android 屏幕适配的总结,适合面试