Pruebas y Depuración de Expresiones Regulares: De lo Básico a Patrones Eficientes
Texto
¿Por qué Probar Regex en Línea?
Las expresiones regulares son potentes pero fáciles de hacer mal en el primer intento. Un probador en línea te ayuda a:
- Resaltar coincidencias en tiempo real: Ve qué coincide mientras escribes
- Visualizar grupos de captura: Inspecciona cada grupo con claridad
- Alternar flags rápidamente: Cambia
g/i/m/ssin redespliegue - Detectar errores de sintaxis al instante: Los patrones inválidos se marcan inmediatamente
Tabla de Referencia de Sintaxis Regex
Coincidencia básica
| Sintaxis | Significado | Ejemplo | Coincide con |
|---|---|---|---|
. |
Cualquier carácter (excepto salto de línea) | a.c |
abc, a1c |
\d |
Dígito | \d{3} |
123 |
\w |
Carácter de palabra | \w+ |
hello_1 |
\s |
Espacio en blanco | a\sb |
a b |
[abc] |
Clase de caracteres | [aeiou] |
a, e, i |
[^abc] |
Clase negada | [^0-9] |
no dígitos |
Cuantificadores
| Sintaxis | Significado | Greedy / Lazy |
|---|---|---|
* |
Cero o más | a* / a*? |
+ |
Uno o más | a+ / a+? |
? |
Cero o uno | a? / a?? |
{n,m} |
Entre n y m | a{2,4} |
Grupos y referencias
| Sintaxis | Significado | Ejemplo |
|---|---|---|
(abc) |
Grupo de captura | (\d{4})-(\d{2}) |
(?:abc) |
Grupo sin captura | `(?:http |
\1 |
Retroreferencia | (\w)\1 coincide con aa, bb |
(?<name>) |
Grupo con nombre | (?<year>\d{4}) |
Usar el Probador de Regex en Línea
Pasos
- Abre el Probador de Regex
- Ingresa tu patrón en el campo de regex
- Pega el texto de ejemplo en el campo de prueba
- Elige flags (
gglobal /isin distinción de mayúsculas /mmultilínea) - Revisa los resaltados y detalles de coincidencia
Flags comunes
| Flag | Significado | Por defecto |
|---|---|---|
g |
Encontrar todas las coincidencias | Solo la primera coincidencia |
i |
Ignorar mayúsculas/minúsculas | Distingue mayúsculas/minúsculas |
m |
Modo multilínea | Línea única |
s |
. coincide con saltos de línea |
. no coincide con saltos de línea |
u |
Modo Unicode | — |
Errores Comunes
1. Coincidencia greedy
Texto: <div>hello</div><div>world</div>
Patrón: <div>.*</div>
Resultado: ¡toda la cadena coincide como un solo bloque!
Solución: <div>.*?</div> ← coincidencia lazy, dos coincidencias separadas
2. Retroceso catastrófico
// Peligroso: cuantificadores anidados causan retroceso exponencial
/^(a+)+$/.test('a'.repeat(30) + 'b');
// Esta prueba puede tardar segundos o colgar
// Solución: evitar cuantificadores anidados, o usar grupos atómicos donde sea compatible
3. Olvidar escapar caracteres especiales
Patrón: price.com ← . coincide con cualquier carácter
Solución: price\.com ← coincide solo con price.com
Ejemplos Prácticos
| Caso de uso | Patrón |
|---|---|
| Teléfono EE.UU. (simplificado) | ^\+?1?\d{10,11}$ |
| Email (básico) | ^[\w.-]+@[\w-]+\.[\w.]+$ |
| URL | ^https?:\/\/[\w.-]+(?:\.[\w]+)+[/\w.-]*$ |
| Dirección IP | ^(\d{1,3}\.){3}\d{1,3}$ |
| Fecha YYYY-MM-DD | `^\d{4}-(?:0[1-9] |
| Caracteres CJK | [\u4e00-\u9fff]+ |
FAQ
¿El patrón funciona en el probador pero no en el código?
Verifica si olvidaste el flag g, o si tu cadena contiene saltos de línea pero el patrón carece de m / s.
¿Cómo coincido con texto multilínea?
Usa el flag s para que . coincida con saltos de línea, o usa [\s\S] en lugar de ..
Resumen
Las expresiones regulares son esenciales para los desarrolladores, pero la sintaxis es fácil de hacer mal. Usa el Probador de Regex para validar y depurar en tiempo real. ToolsKu también ofrece Buscar y Reemplazar y Diff de Texto para un flujo de trabajo de texto completo.
#正则表达式#Regex#文本处理#教程#调试