在PHP中,可以使用以下正则表达式来验证社会统一信用代码(18位):
$pattern = '/^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/i';
这个正则表达式的含义是:
^
:开始符号,表示字符串的开始。[0-9A-HJ-NPQRTUWXY]{2}
:匹配两位大写字母或数字,这些字母不包括"I"、"O"、"Z"、"S"、"V"。\d{6}
:匹配六位数字。[0-9A-HJ-NPQRTUWXY]{10}
:匹配十位大写字母或数字,同样不包括"I"、"O"、"Z"、"S"、"V"。$
:结束符号,表示字符串的结束。/i
:标志,表示匹配时忽略字母的大小写。在实际使用时,你可以将此正则表达式用于字符串的匹配或验证,例如:
$socialCreditCode = '91110105MA01N37Y1G';
if (preg_match($pattern, $socialCreditCode)) {
echo "社会统一信用代码格式正确";
} else {
echo "社会统一信用代码格式错误";
}
请注意,这个正则表达式只检查了社会统一信用代码的长度和格式,但并没有进行更深入的合法性验证,如校验地区码、组织机构代码等。如果你需要进行更严格的验证,可能需要结合其他的验证方法或算法。