返回
正则表达式教程:校验统一社会信用代码
正则表达式
2024-02-28 15:47:32
一、正则解释
正则表达式:/^[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("无效")