找回密码
 立即注册

QQ登录

只需一步,快速开始

hmly720

注册会员

4

主题

13

帖子

141

积分

注册会员

积分
141
最新发帖
hmly720
注册会员   /  发表于:2024-1-31 10:58  /   查看:2042  /  回复:6
1金币
目前用的这个 ^[0-9A-Z]{18}$   这个只能检测位数有没有少,并不能验证有没有错误,需要能校验有没有错误   

最佳答案

查看完整内容

将统一社会信用代码的前17位数字分别乘以不同的系数,这些系数是从第18位到第2位逆序排列的“1, 3, 9, 27, ...”序列(即模11余数加权求和的校验方法)。 把乘积相加得到一个数值。 对这个数值取模11,得到的结果对应的校验码表上的字符就是正确的第18位校验码。 如果计算出来的校验码与提供的第18位字符匹配,则表示该统一社会信用代码是合法的。 正则是不能判断是不是对的

6 个回复

倒序浏览
最佳答案
最佳答案
豪~豪悬赏达人认证 活字格认证
银牌会员   /  发表于:2024-1-31 10:58:34
来自 6#
hmly720 发表于 2024-1-31 11:29
这个只能验证位数够不够,不能验证正确不正确

将统一社会信用代码的前17位数字分别乘以不同的系数,这些系数是从第18位到第2位逆序排列的“1, 3, 9, 27, ...”序列(即模11余数加权求和的校验方法)。
把乘积相加得到一个数值。
对这个数值取模11,得到的结果对应的校验码表上的字符就是正确的第18位校验码。
如果计算出来的校验码与提供的第18位字符匹配,则表示该统一社会信用代码是合法的。

正则是不能判断是不是对的
回复 使用道具 举报
oldhand
中级会员   /  发表于:2024-1-31 11:05:51
2#
试试这个  ^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}
回复 使用道具 举报
fanhuayimeng
论坛元老   /  发表于:2024-1-31 11:07:21
3#
统一社会信用代码正则表达式:
统一社会信用代码由18位数字或者大写字母组成,但是字母不包括 I、O、Z、S、V
一共由五部分组成
第一部分:登记管理部门代码1位 (数字或大写英文字母)
第二部分:机构类别代码1位 (数字或大写英文字母)
第三部分:登记管理机关行政区划码6位 (数字)
第四部分:主体标识码(组织机构代码)9位 (数字或大写英文字母)
第五部分:校验码1位 (数字或大写英文字母)
正则如下: 18位统一社会信用代码(新)正则校验: /[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}/


15位统一社会信用代码(旧)正则校验:目前还有老的工商注册代码,也就是15位的社会信用代码,正则表达式如下:(弱校验)
/[1-9]\d{15}/


同时支持18位和15位社会信用代码 /^([0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\d{14})$/
回复 使用道具 举报
hmly720
注册会员   /  发表于:2024-1-31 11:29:31
4#
fanhuayimeng 发表于 2024-1-31 11:07
统一社会信用代码正则表达式:统一社会信用代码由18位数字或者大写字母组成,但是字母不包括 I、O、Z、S、V ...

这个只能验证位数够不够,不能验证正确不正确
回复 使用道具 举报
豪~豪悬赏达人认证 活字格认证
银牌会员   /  发表于:2024-1-31 16:26:21
5#
本帖最后由 豪~豪 于 2024-1-31 16:40 编辑

回复 使用道具 举报
Nathan.guo活字格认证 Wyn认证
超级版主   /  发表于:2024-1-31 17:50:29
7#
大佬,这个如豪豪大佬所言,我们需要写一定的逻辑手动去校验代码的合法性,咱们可以将一些excel结合使用来验证;

也可以使用js来验证,可以参考:https://juejin.cn/post/6994082346274127885
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部