Regex para slug de URL

Usa /^[a-z0-9]+(?:-[a-z0-9]+)*$/ para comprobar que una cadena completa es un slug de URL válido. Cada ejemplo de abajo está probado contra el patrón, y puedes abrirlo en el Probador de Regex con las muestras precargadas.

Actualizado el

/^[a-z0-9]+(?:-[a-z0-9]+)*$/
Abrir en el Probador de Regex
EntradaResultado
regex-tester✓ Coincide
hello-world-2026✓ Coincide
a✓ Coincide
Hello-World✗ No coincide
double--dash✗ No coincide
-leading✗ No coincide
trailing-✗ No coincide
with space✗ No coincide

Cómo funciona el patrón

ParteSignificado
[a-z0-9]+Una o más letras minúsculas o dígitos
(?:-[a-z0-9]+)*Cualquier número de palabras adicionales, cada una tras un único guion
^…$La cadena completa, así que no admite guiones al principio, al final ni dobles

Ejemplos de código

JavaScript

const re = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'[a-z0-9]+(?:-[a-z0-9]+)*', value))

PHP

preg_match('/^[a-z0-9]+(?:-[a-z0-9]+)*$/', $value) === 1;

Notas y limitaciones

Convierte títulos en slugs con el Generador de Slugs.

Preguntas frecuentes

¿Cuál es la regex para slug de URL?
/^[a-z0-9]+(?:-[a-z0-9]+)*$/ — coincide con la cadena completa. Consulta la tabla de arriba para ver qué hace cada parte.
¿Qué ejemplos coinciden?
De los ejemplos probados, coinciden estos: regex-tester, hello-world-2026, a. Los demás no.
¿Cómo pruebo esta regex?
Haz clic en «Abrir en el Probador de Regex»: el patrón, los flags y el texto de muestra se cargan automáticamente, y las coincidencias se resaltan mientras editas.