Tres áreas prácticas de las expresiones regulares
Las expresiones regulares se usan en tres tipos de operaciones:
- Validación: juzgar si el texto cumple con el formato (ej. correo, teléfono)
- Extracción: encontrar contenido que coincida con el patrón en el texto (ej. todas las URLs, todos los importes)
- Sustitución: reemplazar las partes que coinciden con el patrón por otra cosa (ej. unificar formato de fecha, enmascarar teléfono)
A continuación se demuestra con casos prácticos.
Casos de validación
Validar número de teléfono
Regex: ^1[3-9]\d{9}$
Puntos clave: usar ^ y $ para anclar el inicio y el final, asegurando que toda la cadena sea un número de teléfono y no un texto más largo que lo contiene. Limitar el segundo dígito a 3-9 es la regla actual de asignación.
Validar correo electrónico
Regex: ^[\w.-]+@[\w.-]+.\w+$
Puntos clave: la versión simplificada es suficiente, una regex estricta de correo es muy compleja. En proyectos reales, usa la versión simplificada + envío de correo de verificación para doble garantía.
Validar documento de identidad
Regex: ^\d{17}[\dXx]$
Puntos clave: 18 dígitos, los primeros 17 son números, el último es número o X. Esto solo valida el formato, no el dígito de control.
Validar URL
Regex: ^https?://[\w.-]+
Puntos clave: empieza con http o https, seguido del dominio. Versión simplificada, una regex completa de URL es extremadamente compleja.
Casos de extracción
Extraer todos los números de teléfono
Regex: 1[3-9]\d{9}
Sin ^ ni $, encuentra todos los números de teléfono en el texto. Usa coincidencia global (flag g).
Extraer todas las URLs
Regex: https?://[\w./?=&%-]+
Coincide con URLs que empiezan por http(s). Los caracteres reales de URL son más complejos, ajusta el conjunto de caracteres según sea necesario.
Extraer todos los importes
Regex: [¥$]\d+(?:.\d+)?
Coincide con importes que empiezan por ¥ o $, con decimales opcionales. Ej: ¥100, $99.9.
Extraer contenido de etiquetas HTML
Regex: <a[^>]*>([^<]+)
Extrae el texto dentro de la etiqueta a. El grupo entre paréntesis captura el contenido textual. Ten en cuenta que procesar HTML con regex no es robusto; para HTML complejo es más estable usar un parser.
Casos de sustitución
Enmascarar número de teléfono
Reemplazar los 4 dígitos centrales por asteriscos: cambiar 1[3-9]\d{9} manteniendo los primeros 3 y los últimos 4.
En la práctica se usan grupos de captura: regex (1[3-9]\d)\d{4}(\d{4}), sustituir por 1\1****\2. \1 y \2 referencian los grupos.
Unificar formato de fecha
Convertir 2026/07/12 a 2026-07-12: regex (\d{4})/(\d{2})/(\d{2}), sustituir por \1-\2-\3.
Eliminar espacios redundantes
Convertir múltiples espacios consecutivos en uno solo: regex \s+, sustituir por un solo espacio.
Eliminar etiquetas HTML
Quitar todas las etiquetas HTML dejando solo el texto: regex <[^>]+>, sustituir por vacío. Ten en cuenta que se pierden los > dentro de atributos de etiqueta; en situaciones complejas usa un parser.
Consejos de depuración
Verificación paso a paso con herramienta de prueba
Usa la herramienta de prueba de regex:
- Introduce la regex
- Introduce el texto de prueba (con ejemplos que deben y no deben coincidir)
- Revisa los resultados de coincidencia resaltados
- Ajusta la regex gradualmente hasta que el resultado sea correcto
Primero coincidir, luego optimizar
Primero escribe una regex que coincida, luego considera la optimización (rendimiento, precisión). No busques la perfección desde el principio.
Usar visualización de regex online
Para regex complejas, usa herramientas de visualización para descomponer la estructura y comprender el significado de cada parte.
Prestar atención a casos límite
- Cadena vacía
- Cadenas con coincidencia parcial
- Cadenas con caracteres especiales
- Cadenas muy largas
Patrones de regex reutilizables
Chino
[\u4e00-\u9fa5]+
Código postal
^\d{6}$
Número QQ
^[1-9]\d{4,10}$
Color hexadecimal
^#[0-9a-fA-F]{6}$
Número de versión
^\d+.\d+.\d+$
Errores comunes
Coincidencia codiciosa
.* coincide con demasiado. Para extraer contenido de etiquetas usa [^<]+ en lugar de .* para evitar coincidencias entre etiquetas.
Caracteres especiales sin escapar
Para coincidir con metacaracteres como punto, asterisco o interrogación, hay que escaparlos. Para coincidir con una barra invertida en sí, escribe \.
Coincidencia multilínea
Por defecto . no coincide con saltos de línea. Para procesar texto multilínea, activa el modo de una sola línea o usa [\s\S] para coincidir con cualquier carácter.
Problemas de rendimiento
catastrophic backtracking (retroceso catastrófico): cuantificadores anidados como (a+)+ pueden ser extremadamente lentos con ciertas entradas. Presta atención al rendimiento con regex complejas; para textos muy largos, trunca antes de coincidir.
Resumen
La práctica de regex se divide en validación, extracción y sustitución. La validación usa anclas ^ $, la extracción usa coincidencia global, la sustitución usa referencias a grupos de captura. Al escribir regex, primero prueba y verifica con una herramienta, luego optimiza. Recuerda algunos patrones habituales (teléfono, correo, fecha, URL) y serán suficientes para el día a día. La herramienta de prueba de regex de DocsAll se ejecuta en el navegador, permite probar mientras escribes y no sube el texto.