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

本文详细解析了统一社会信用代码的编码规则,包括其组成部分、编码标准及应用规范。介绍了代码由18位数字或字母组成,分为登记管理部门代码、机构类别代码、行政区划码、主体标识码和校验码五个部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

统一社会信用代码

统一社会信用代码正则:/^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/

// 返回值为true或false
function isSocialCode(socialCode) {
  const reg = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/;
  return reg.test(socialCode);
}
编码规则

统一社会信用代码由国家标准委发布。国家标准委发布了强制性国家标准《法人和其他组织统一社会信用代码编码规则》。该标准于2015年10月1日实施。
在《法人和其他组织统一社会信用代码编码规则》中明确指出,容易混淆的大写英文字母 “I、O、Z、S、V” 不得编入统一信用代码

根据《法人和其他组织统一社会信用代码编码规则》第四项第一条的规定:规定统一社会信用代码由十八位的阿拉伯数字或大写英文字母(不使用I、O、Z、S、V)组成,包括第1位登记管理部门代码、第2位机构类别代码、第3位—第8位登记管理机关行政区划码、第9位—第17位主体标识码(组织机构代码)、第18位校验码五个部分。

第一部分(第1位):登记管理部门代码,使用阿拉伯数字或英文字母表示。例如,机构编制、民政、工商三个登记管理部门分别使用1、2、3表示,其他登记管理部门可使用相应阿拉伯数字或英文字母表示。

第二部分(第2位):机构类别代码,使用阿拉伯数字或英文字母表示。登记管理部门根据管理职能,确定在本部门登记的机构类别编码。例如,机构编制部门可用1表示机关单位,2表示事业单位,3表示由中央编办直接管理机构编制的群众团体;民政部门可用1表示社会团体,2表示民办非企业单位,3表示基金会;工商部门可用1表示企业,2表示个体工商户,3表示农民专业合作社。

第三部分(第3—8位):登记管理机关行政区划码,使用阿拉伯数字表示。例如,国家用100000,北京用110000,注册登记时由系统自动生成,体现法人和其他组织注册登记及其登记管理机关所在地,既满足登记管理部门按地区管理需求,也便于社会对注册登记主体所在区域进行识别。(参照《中华人民共和国行政区划代码》〔GB/T2260—2007〕)

第四部分(第9—17位):主体标识码(组织机构代码),使用阿拉伯数字或英文字母表示。(参照《全国组织机构代码编制规则》〔GB 11714—1997〕)

第五部分(第18位):校验码,使用阿拉伯数字或英文字母表示。

### 使用 JavaScript 正则表达式验证中国手机号格式 在中国,手机号通常由11位数字组成,前三位表示运营商和区域信息。通过正则表达式可以有效验证输入的字符串是否符合标准的手机号格式。 以下是基于提供的参考资料构建的一个完整的解决方案: #### 验证逻辑 为了确保准确性,需考虑以下条件: - 手机号长度必须为11位。 - 前缀应属于已知的有效范围(如 `13`、`14`、`15`、`16`、`17`、`18` 或 `19` 开头)[^2]。 实现此功能的核心在于定义一个合适的正则表达式并将其应用于目标字符串。 #### 实现代码 下面是一个简单的函数示例,它利用了正则表达式来判断给定字符串是否为中国合法的手号码: ```javascript function validatePhoneNumber(phoneNumber) { const regex = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/; return regex.test(phoneNumber); } // 测试案例 console.log(validatePhoneNumber("13245217431")); // 输出: true [^2] console.log(validatePhoneNumber("12345678901")); // 输出: false (不符合当前有效的前缀规则) ``` 在此脚本中,变量 `regex` 定义了一个复杂的模式串,该模式串涵盖了目前大多数活跃的中国移动通信服务商所分配的第一组三到四位数编码后的全部可能性集合;随后调用了 `.test()` 方法检测传入参数 `phoneNumber` 是否完全满足设定的标准。 #### 解析说明 - **^(...)\\d{8}$**: 这部分指定了整个匹配过程从第一位到最后一位都严格遵循特定结构的要求。其中 `( )` 表达了一种选择关系,“或者”的意思,而 `\d{8}` 则意味着后面紧接着八个连续的阿拉伯数字[^4]。 - 各个分组内部的具体数值反映了不同时间段内各主要电信企业实际发行使用的移动网络接入码段详情[^2]。 这种设计既保证了较高的识别精度又兼顾到了未来可能新增加出来的其他类别情况下的兼容性扩展需求。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值