20 patrones de regex comunes que todo desarrollador debería conocer
20 patrones de regex comunes que todo desarrollador debería conocer
Regex resuelve problemas reales: validación de entradas, extracción de datos y transformación de cadenas. Esta guía presenta 20 expresiones regulares listas para usar que cubren las tareas de procesamiento de texto más comunes. Cada patrón incluye una explicación de lo que coincide.
1. Dirección de correo electrónico
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
La parte local admite letras, dígitos, puntos y caracteres especiales. El dominio admite letras, dígitos y puntos. El TLD debe tener al menos dos letras.
2. URL
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z]{2,}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)
Coincide con URLs HTTP/HTTPS con www opcional, nombre de dominio, TLD, ruta y cadena de consulta.
3. Número de teléfono de EE. UU.
^\(?(\d{3})\)?[-.\s]?(\d{3})[-.\s]?(\d{4})$
Coincide con (555) 123-4567, 555-123-4567, 555.123.4567 y 5551234567.
4. Teléfono internacional
^\+?(\d{1,3})\s?[-.\s]?\(?\d{1,4}\)?[-.\s]?\d{1,4}[-.\s]?\d{1,9}$
Patrón permisivo para números internacionales con códigos de país.
5. Contraseña segura
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
Requiere 8 o más caracteres, una minúscula, una mayúscula, un dígito y un carácter especial. Utiliza aserciones de anticipación (lookahead).
6. Fecha (YYYY-MM-DD)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
Formato ISO 8601. Mes 01-12, día 01-31. No valida los límites por mes (el 30 de febrero pasa).
7. Fecha (MM/DD/YYYY)
^(0[1-9]|1[0-2])\/(0[1-9]|[12]\d|3[01])\/\d{4}$
Formato estadounidense con barras.
8. Hora (HH:MM de 24 horas)
^([01]\d|2[0-3]):[0-5]\d$
Horas 00-23, minutos 00-59.
9. Dirección IPv4
^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$
Cuatro octetos. Para una validación estricta (0-255), reemplaza \d{1,3} por (25[0-5]|2[0-4]\d|[01]?\d\d?).
10. Dirección IPv6
^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$
IPv6 completo con 8 grupos de dígitos hexadecimales. No admite la abreviatura ::.
11. Dirección MAC
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
Separados por dos puntos o guiones.
12. Código de color hexadecimal
^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
De 3 dígitos (#fff) o 6 dígitos (#ffffff), sin distinción entre mayúsculas y minúsculas.
13. Número de tarjeta de crédito
^\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}$
16 dígitos con separadores opcionales. No valida la suma de verificación de Luhn.
14. Código postal de EE. UU.
^\d{5}(-\d{4})?$
12345 o 12345-6789.
15. Nombre de usuario
^[a-zA-Z0-9_]{3,16}$
De 3 a 16 caracteres, solo letras, dígitos y guiones bajos.
16. Slug de URL
^[a-z0-9-]+$
Letras minúsculas, dígitos y guiones. Común en los sistemas CMS.
17. Etiqueta HTML
<\/?[\w\s]*>|<.+[\w\s]*>
Coincide con las etiquetas de apertura y cierre. No es adecuado para HTML anidado.
18. Extensión de archivo
\.([a-zA-Z]{2,})$
Extrae la extensión sin el punto.
19. Normalización de espacios en blanco
\s+
Reduce varios espacios, tabulaciones o saltos de línea a uno solo.
20. Extraer números
-?\d+(\.\d+)?
Números enteros y decimales, incluidos los negativos.
Consejos de rendimiento
- Sé específico: evita
.*, que puede provocar un retroceso catastrófico (catastrophic backtracking). - Ancla con
^y$para limitar el rango de búsqueda. - Prueba casos límite: cadenas vacías, cadenas largas y caracteres especiales.
Prueba estos patrones en línea
Usa la herramienta de prueba de regex para experimentar con estos patrones. Pega cualquier expresión, introduce texto de muestra y observa las coincidencias resaltadas en tiempo real. El comprobador muestra los grupos de captura y te ayuda a depurar los patrones antes de usarlos.