Laravel nos permite definir parámetros en las rutas y validarlos mediante expresiones regulares (Regex). Esta funcionalidad resulta muy útil cuando quieres asegurar que tus parámetros tengan un formato específico (por ejemplo, solo letras, números, slugs, etc.).
1. Validar parámetros con la cláusula where
La forma más simple de validar parámetros es utilizar el método where en la definición de rutas. Este método acepta un array o un par clave => valor donde valor es la expresión regular que debe coincidir.
1.1. Ejemplo básico
En este ejemplo, se asume que el parámetro {article} debe ser únicamente numérico ([0-9]+).
1.2. Validar idioma o localidad
Un caso muy común es manejar prefijos de idioma en la URL. Por ejemplo, supongamos que solo aceptamos 2 letras (es, en, fr, etc.):
De esta manera, Laravel validará que el parámetro {locale} tenga exactamente 2 letras. Si alguien ingresa, por ejemplo, 123, la ruta no coincidirá.
Consejo: Este enfoque es ideal cuando manejas contenido multilenguaje y quieres forzar el patrón de 2 letras (
en,es,fr, etc.).
2. Uso de restricciones múltiples en una misma ruta
Es posible combinar varias validaciones en la misma ruta si tienes más de un parámetro:
Aquí:
yeardebe ser un número de 4 dígitos (por ejemplo, 2025).monthdebe ser un número entre 01 y 12.
3. Validar parámetros usando métodos dedicados
A partir de Laravel 8.x (y versiones posteriores), se han introducido métodos como whereNumber, whereAlpha, whereAlphaNumeric y whereUuid para los casos más comunes, evitando así que tengas que recordar patrones regex de memoria. Por ejemplo:
Estos métodos te ayudan a escribir código más legible, pero si necesitas una validación más compleja, la regex tradicional sigue siendo la opción más flexible.
4. Definir patrones globales con Route::pattern()
Si usas el mismo patrón repetidas veces en tu aplicación, puedes definirlo de manera global en el método boot de tu AppServiceProvider(app/Providers/AppServiceProvider.php):
De esta forma, cualquier ruta que incluya {slug} automáticamente usará esa expresión regular:
No es necesario volver a poner ->where('slug', '[a-z0-9-]+') cada vez.
5. Ejemplos Avanzados de Expresiones Regulares
5.1. Validar Slugs SEO
Un slug típico podría aceptar letras, números y guiones:
5.2. Validar Fechas
Si esperas un formato de fecha YYYY-MM-DD:
5.3. Validar Alias con guiones y puntos
Algunos sitios usan puntos en sus URLs (por ejemplo, subdominios simulados). Se puede permitir [a-z0-9-.]+:
Tip: Recuerda escapar el punto
.si quieres que se interprete como un carácter literal y no como “cualquier carácter”.
6. Errores 404 y Manejo de Excepciones
Cuando un usuario intenta acceder a una ruta con parámetros que no cumplen la expresión regular, Laravel lanzará una respuesta 404 (Not Found) automáticamente. Esto es deseable para mantener la coherencia de tu sitio y evitar rutas mal formadas.
7. Buenas Prácticas
Simplicidad: Usa métodos como
whereNumber,whereAlphaowhereAlphaNumericsiempre que satisfagan tu necesidad.Legibilidad: Define patrones globales (
Route::pattern()) si usas el mismo patrón en múltiples rutas.Coherencia: Asegúrate de que tus controladores y modelo también estén alineados con estas validaciones (especialmente si usas Slugs).
Documenta tus rutas: Escribe comentarios o una pequeña descripción al lado de cada ruta que use validaciones complejas.
8. Continúa Aprendiendo Laravel 11
Si te interesa profundizar más en el ecosistema y las últimas novedades de Laravel, no te pierdas la Ruta de Aprendizaje Laravel 11. Allí encontrarás cursos, recursos y ejemplos prácticos que te ayudarán a sacarle el máximo provecho a la última versión del framework.
Conclusión
Las expresiones regulares para validar parámetros de rutas en Laravel son una herramienta poderosa y versátil que te permiten definir de forma clara y concisa qué formatos son válidos. Ya sea que necesites un simple parámetro numérico o una compleja validación de slug, Laravel te ofrece múltiples formas de resolverlo:
Cláusula
->where()para definir patrones puntuales.Métodos dedicados como
whereNumber(),whereAlpha(), etc.Patrones globales con
Route::pattern()para mantener tu código limpio y ordenado.
Recuerda revisar la Ruta de Aprendizaje Laravel 11 para seguir aprendiendo sobre este fantástico framework y mantenerte al día con las últimas novedades de Laravel.
Curso Laravel 12
Completo 2026
El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.
star Incluido en cualquier suscripción