返回

正则表达式教程:校验统一社会信用代码

正则表达式

一、正则解释

正则表达式:/^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/

  • ^ :匹配字符串的开头。
  • [0-9A-HJ-NPQRTUWXY] :匹配第一个字符,可以是数字(0-9)或特定字母(A、H、J、N、P、Q、R、T、U、W、X、Y)。
  • {2} :表示匹配前面的字符两次,即前两位为数字或特定字母。
  • \d :匹配数字(0-9)。
  • {6} :表示匹配前面的字符六次,即中间六位为数字。
  • [0-9A-HJ-NPQRTUWXY] :匹配最后一个字符,可以是数字(0-9)或特定字母(A、H、J、N、P、Q、R、T、U、W、X、Y)。
  • {10} :表示匹配前面的字符十次,即后十位为数字或特定字母。
  • $ :匹配字符串的末尾。

二、使用场景

该正则表达式主要用于校验统一社会信用代码的格式是否正确。统一社会信用代码由18位组成,前两位为数字或特定字母,中间六位为数字,后十位为数字或特定字母。

三、代码示例

JavaScript

const regex = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/;
const code = "91230184MA1BUFLT44";
const isValid = regex.test(code);
console.log(isValid); // true

Java

import java.util.regex.Pattern;

public class SocialCreditCodeValidator {

    public static void main(String[] args) {
        String regex = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}
import java.util.regex.Pattern;

public class SocialCreditCodeValidator {

    public static void main(String[] args) {
        String regex = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$";
        Pattern pattern = Pattern.compile(regex);
        String code = "91230184MA1BUFLT44";
        boolean isValid = pattern.matcher(code).matches();
        System.out.println(isValid); // true
    }
}
quot;
; Pattern pattern = Pattern.compile(regex); String code = "91230184MA1BUFLT44"; boolean isValid = pattern.matcher(code).matches(); System.out.println(isValid); // true } }

PHP

<?php
$regex = "/^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/";
$code = "91230184MA1BUFLT44";
$isValid = preg_match($regex, $code);
echo $isValid ? "有效" : "无效"; // 有效

Python

import re

regex = "^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}
import re

regex = "^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$"
code = "91230184MA1BUFLT44"
match = re.match(regex, code)
if match:
    print("有效")
else:
    print("无效")
quot;
code = "91230184MA1BUFLT44" match = re.match(regex, code) if match: print("有效") else: print("无效")