laravel验证身份证号规则
时间: 2023-10-02 17:12:08 浏览: 51
Laravel没有内置身份证号码验证规则,但是可以通过自定义验证规则来实现。
下面是一个简单的身份证号码验证规则示例:
```php
Validator::extend('id_card', function ($attribute, $value, $parameters, $validator) {
// 判断长度是否为 18 位
if (strlen($value) != 18) {
return false;
}
// 判断前 17 位是否为数字
if (!preg_match('/^\d{17}$/', substr($value, 0, 17))) {
return false;
}
// 判断最后一位是否为数字或 X
if (!in_array(substr($value, -1), ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'X'])) {
return false;
}
// 计算校验码
$sum = 0;
for ($i = 0; $i < 17; $i++) {
$sum += substr($value, $i, 1) * pow(2, 17 - $i - 1) % 11;
}
$checkCode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'][$sum % 11];
// 判断校验码是否正确
if (substr($value, -1) != $checkCode) {
return false;
}
return true;
});
```
使用方式:
```php
$validator = Validator::make($request->all(), [
'id_card' => 'required|id_card',
]);
```
以上示例只是一个简单的验证规则,实际应用中需要根据具体需求进行扩展和改进。