Saltar al contenido

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í:

  • year debe ser un número de 4 dígitos (por ejemplo, 2025).

  • month debe 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

  1. Simplicidad: Usa métodos como whereNumber, whereAlpha o whereAlphaNumeric siempre que satisfagan tu necesidad.

  2. Legibilidad: Define patrones globales (Route::pattern()) si usas el mismo patrón en múltiples rutas.

  3. Coherencia: Asegúrate de que tus controladores y modelo también estén alineados con estas validaciones (especialmente si usas Slugs).

  4. 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.

school Curso completo

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.

access_time 8 horas de contenido
layers 4 tecnologías en 1
update 100% actualizado
code Proyectos prácticos
Ver Curso Laravel 12 arrow_forward

star Incluido en cualquier suscripción

Rutas de aprendizaje