用php这个身份证正则表达式
时间: 2023-03-25 11:00:45 浏览: 115
身份证号码正则表达式可以用以下代码实现:
$pattern = '/^[1-9]\d{5}(19|20)\d{2}([1-9]|1[-2])([1-9]|[1-2][-9]|3[-1])\d{3}[-9Xx]$/';
这个正则表达式可以匹配18位身份证号码,其中:
- 第1-6位是地区码,由1个数字和5个数字或字母组成;
- 第7-14位是出生年月日,由4位数字表示年份,2位数字表示月份,2位数字表示日期;
- 第15-17位是顺序码,由3位数字组成;
- 第18位是校验码,可以是数字-9或字母X。
注意,这个正则表达式只能匹配符合规范的身份证号码,但不能保证这些号码是真实存在的。如果需要验证身份证号码的真实性,还需要进行其他的验证步骤。
相关问题
php身份证正则表达式
这里是一个基本的 PHP 正则表达式,用于验证中国身份证号码的格式:
```php
function validateIDCard($idCard) {
// 判断身份证长度
if (strlen($idCard) !== 18) {
return false;
}
// 分解身份证号码
$code = str_split($idCard);
// 加权因子
$factor = array(7, 9, 10, 5, 8,4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
// 校验码对应值
$verifyCode = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
// 计算校验码所需值
$checksum = 0;
for ($i = 0; $i < 17; $i++) {
if (!is_numeric($code[$i])) {
return false;
}
$checksum += $code[$i] * $factor[$i];
}
// 取余数
$mod = $checksum % 11;
// 校验码验证
if ($verifyCode[$mod] === $code[17]) {
return true;
}
return false;
}
```
你可以使用这个函数来验证一个身份证号码,例如:
```php
$idCard = '身份证号码';
if (validateIDCard($idCard)) {
echo "身份证号码有效.";
} else {
echo "身份证号码无效.";
}
```
请记住,这只是一个基本的验证,不能验证身份证号码的真实性。在实际应用中,你可能还需要检查身份证号码的出生日期、地区码等信息来进行更准确的验证。
阅读全文