统一社会信用代码正则表达式

统一社会信用代码正则表达式

统一社会信用代码是国家对企事业单位和其他组织进行统一的编号标识。其编码规则由18位字符组成,包含数字和大写字母,格式为:前6位为行政区划代码,中间9位为组织机构代码,最后一位为校验码。

为了能够快速有效地校验统一社会信用代码的格式是否合法,我们需要使用正则表达式。下面,让我们来学习如何编写统一社会信用代码的正则表达式。

正则表达式规则

我们可以将统一社会信用代码的正则表达式规则划分为三部分:

行政区划代码

行政区划代码是指代表某个行政区划单位的6位数字编码,包括省、市、县等行政区划。根据《中华人民共和国中央编码管理规定》的规定,行政区划代码的取值范围为110000~820000。因此,行政区划代码的正则表达式规则为:

^(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)\d{4}$

组织机构代码

组织机构代码是指代表某个组织的9位数字或大写字母编码,包括企业、机关、事业单位、社会团体等组织形式。根据《中华人民共和国组织机构代码管理条例》的规定,组织机构代码的数字部分的取值范围为000000~999999,字母部分的取值范围为A~Z,但不包括I、O、S、V和Z。因此,组织机构代码的正则表达式规则为:

^[A-Z\d]{9}$

校验码

校验码是指由统一社会信用代码的前17位按照一定规则计算得出的一位数字或字母,用于验证统一社会信用代码的合法性。其计算规则为按照ISO 7064:1983.MOD 11-2的规定计算。因此,校验码的正则表达式规则为:

^[A-Z\d]{1}$

综上所述,统一社会信用代码的正则表达式规则为:

^(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)\d{4}[A-Z\d]{9}[A-Z\d]{1}$

示例代码

下面是使用Java实现的统一社会信用代码的正则表达式示例代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String regex = "^(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)\\d{4}[A-Z\\d]{9}[A-Z\\d]{1}$";
        String code1 = "91310000788595428E";
        String code2 = "91110106MA0090PC0F7";
        String code3 = "310000000010345123";
        Pattern pattern = Pattern.compile(regex);
       Matcher matcher1 = pattern.matcher(code1);
        Matcher matcher2 = pattern.matcher(code2);
        Matcher matcher3 = pattern.matcher(code3);
        if (matcher1.matches()) {
            System.out.println(code1 + "是一个有效的统一社会信用代码");
        } else {
            System.out.println(code1 + "不是一个有效的统一社会信用代码");
        }
        if (matcher2.matches()) {
            System.out.println(code2 + "是一个有效的统一社会信用代码");
        } else {
            System.out.println(code2 + "不是一个有效的统一社会信用代码");
        }
        if (matcher3.matches()) {
            System.out.println(code3 + "是一个有效的统一社会信用代码");
        } else {
            System.out.println(code3 + "不是一个有效的统一社会信用代码");
        }
    }
}

输出结果为:

91310000788595428E是一个有效的统一社会信用代码
91110106MA0090PC0F7是一个有效的统一社会信用代码
310000000010345123不是一个有效的统一社会信用代码

结论

通过本文的学习,我们了解了统一社会信用代码的正则表达式规则,以及如何使用Java实现对统一社会信用代码的格式进行校验。在实际开发中,我们可以根据需要将正则表达式应用于各种编程语言和场景中,使得我们的代码更加健壮、高效地工作。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程