rap*_*2-h 4 php laravel laravel-5 laravel-5.5
是否有内置的方法来验证带有验证规则的UUID?我在" 可用验证规则 "文档中没有找到任何相关信息.
Laravel 5.6现在提供开箱即用的ramesey/uuid包.您现在可以使用其"isValid"方法来检查UUID.我注意到上面解决方案中的正则表达式有时会失败.我对Laravel内部使用的软件包还没有任何问题.
Validator::extend('uuid', function ($attribute, $value, $parameters, $validator) {
return \Ramsey\Uuid\Uuid::isValid($value);
});
Run Code Online (Sandbox Code Playgroud)
与问题无关,但您现在也可以使用Laravel的"Str"类生成UUID.这就是ramsey/uuid现在默认包含在内的原因,因此无需包含自己的正则表达式.
\Illuminate\Support\Str::uuid();
Run Code Online (Sandbox Code Playgroud)
实际上,Laravel 5.7 支持 UUID 验证。
$validation = $this->validate($request, [
'uuid_field' => 'uuid'
]);
Run Code Online (Sandbox Code Playgroud)
基于文档。
您可以在Laravel中扩展验证器帮助程序以添加自定义验证规则,例如,我创建了自己的验证规则以使用regex验证位置,如下所示:
Validator::extend('location', function ($attribute, $value, $parameters, $validator) {
return preg_match('/^-?\d{1,2}\.\d{6,}\s*,\s*-?\d{1,2}\.\d{6,}$/', $value);
});
Run Code Online (Sandbox Code Playgroud)
引用此文章:PHP preg_match UUID v4
您可以使用UUID正则表达式来创建它,如下所示:
Validator::extend('uuid', function ($attribute, $value, $parameters, $validator) {
return preg_match('/[a-f0-9]{8}\-[a-f0-9]{4}\-4[a-f0-9]{3}\-(8|9|a|b)[a-f0-9]{3??}\-[a-f0-9]{12}/', $value);
});
Run Code Online (Sandbox Code Playgroud)
希望这符合您的要求。
| 归档时间: |
|
| 查看次数: |
3969 次 |
| 最近记录: |