Solución:
Laravel 5.6 proporciona el paquete ramesey / uuid listo para usar ahora. Puede usar su método “isValid” ahora para verificar un UUID. Noté que la expresión regular en la solución anterior fallaba a veces. Todavía no he tenido ningún problema con el paquete utilizado por Laravel internamente.
Validator::extend('uuid', function ($attribute, $value, $parameters, $validator) {
return RamseyUuidUuid::isValid($value);
});
No relacionado con la pregunta, pero ahora también puede generar un UUID usando la clase “Str” de Laravel. Es la razón por la que ramsey / uuid ahora se incluye de forma predeterminada, eliminando la necesidad de incluir su propia expresión regular.
IlluminateSupportStr::uuid();
Puede extender el ayudante del validador en Laravel para agregar sus reglas de validación personalizadas, por ejemplo, he creado mi propia regla de validación para validar la ubicación usando expresiones regulares de la siguiente manera:
Validator::extend('location', function ($attribute, $value, $parameters, $validator) {
return preg_match('/^-?d{1,2}.d{6,}s*,s*-?d{1,2}.d{6,}$/', $value);
});
Haciendo referencia a esta publicación: PHP preg_match UUID v4
Puede usar la expresión regular UUID para crearlo de la siguiente manera:
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);
});
Espero que esto coincida con su solicitud.
En realidad, Laravel 5.7 admite la validación de UUID.
$validation = $this->validate($request, [
'uuid_field' => 'uuid'
]);
Basado en documentación.