精准准确的统一社会信用代码正则(js)

本文介绍了一种用于验证中国法人和其他组织统一社会信用代码的精确正则表达式,该代码遵循GB_32100-2015标准。统一社会信用代码由18位数字或特定的大写字母组成,分为五部分:登记管理部门代码、机构类别代码、登记管理机关行政区划码、全国组织机构代码和校验码。

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

精准准确的统一社会信用代码正则(js)

参照标准:

《GB_32100-2015_法人和其他组织统一社会信用代码编码规则.》
按照编码规则:
统一代码为18位,统一代码由十八位的数字或大写英文字母(不适用I、O、Z、S、V)组成,由五个部分组成:
第一部分(第1位)为登记管理部门代码,9表示工商部门;(数字或大写英文字母)
第二部分(第2位)为机构类别代码;(数字或大写英文字母)
第三部分(第3-8位)为登记管理机关行政区划码;(数字)
第四部分(第9-17位)为全国组织机构代码;(数字或大写英文字母)
第五部分(第18位)为校验码(数字或大写英文字母)

 

正则编写:

统一社会信用代码:/^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g

     开始写的没有写好开始结束,...^开始,$结束要补上

单个校验时可使用:test方法;数组时使用match方法.

 

另外还有一个企业注册号的正则,它的规则是15位数字字母组成:/^[A-Za-z0-9]\w{14}$/g

 

 

 

统一社会信用代码的构成

 

posted @ 2017-05-17 15:34 BigOcean 阅读( ...) 评论( ...) 编辑 收藏
<think>嗯,用户需要的是一个用于验证统一社会信用代码的Java正则表达式。首先,我得回想一下统一社会信用代码的格式规则。根据国家标准,统一社会信用代码是18位,由数字和大写字母组成,结构分为五个部分:登记管理部门代码、机构类别代码、登记管理机关行政区划码、主体标识码和校验码。 首先,我需要确定每一部分的字符范围。登记管理部门代码是1位数字或大写字母,机构类别代码也是1位数字或大写字母,接下来是6位的行政区划码(数字),然后是9位的主体标识码(数字或大写字母),最后是1位的校验码(数字或大写字母)。所以整个结构应该是:^[A-Z0-9]{1}[A-Z0-9]{1}\d{6}[A-Z0-9]{9}[A-Z0-9]{1}$。 不过,可能还需要考虑具体的校验规则,比如校验码的计算方法。但是用户可能只需要格式验证,不涉及校验码的精确计算,所以正则表达式可以只检查长度和字符类型。因此,初步的正则表达式可能是^[A-Z0-9]{18}$,但这样可能不够精确,因为它不区分各部分的具体结构。 为了提高准确性,应该按照各部分的长度来拆分。比如前两位是管理部门和机构类别,各1位,接下来6位数字,再9位字母数字,最后1位校验码。所以正则表达式应该是^[A-Z0-9]{2}\d{6}[A-Z0-9]{10}$。不过这样可能还是不够准确,因为最后一位可能也是字母。需要更精确的分段:^[A-Z0-9]{1}[A-Z0-9]{1}\d{6}[A-Z0-9]{9}[A-Z0-9]{1}$,这样总长度是18位,各部分符合要求。 另外,可能需要排除小写字母,所以使用^[A-Z0-9]{18}$,并且强制大写。然后使用Pattern和Matcher类进行匹配。用户提供的引用中提到了Java正则表达式的基本使用方法,可以参考引用中的Pattern.compile和matcher.matches()方法。 最后,还需要提醒用户,正则表达式只能验证格式,校验码的正确性需要单独计算,但通常格式验证已经能满足大部分需求。所以最终的表达式可能是:^[A-Z0-9]{18}$,但更精确的话,可以分段写:^[A-Z0-9]{2}\d{6}[A-Z0-9]{10}$。不过需要确认各部分的准确长度和内容。根据最新的标准,可能前两位是字母或数字,接下来的6位是数字,然后是9位字母数字,最后一位字母或数字,总长度18。所以正确正则表达式应该是:^[A-Z0-9]{2}\d{6}[A-Z0-9]{10}$。不过需要进一步核实标准文档,确保各部分的正确性。</think>### Java正则表达式匹配统一社会信用代码 统一社会信用代码由18位字符组成(数字+大写字母),格式规则为: 1. 第1位:登记管理部门代码(数字/大写字母) 2. 第2位:机构类别代码(数字/大写字母) 3. 第3-8位:登记管理机关行政区划码(6位数字) 4. 第9-17位:主体标识码(9位数字/大写字母) 5. 第18位:校验码(数字/大写字母) **Java正则表达式示例**: ```java String regex = "^[A-Z0-9]{2}\\d{6}[A-Z0-9]{10}$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher("91350100M000100Y43"); boolean isValid = matcher.matches(); ``` **说明**: - `^[A-Z0-9]{2}`:匹配前两位管理部门和机构类别代码 - `\\d{6}`:匹配6位行政区划码(纯数字) - `[A-Z0-9]{10}$`:匹配后10位主体标识码和校验码 - **注意**:正则表达式仅验证格式,校验码计算需额外实现[^1][^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值