Contadores en expresiones regulares
Clase 8 de 29 • Curso de Expresiones Regulares
Contenido del curso
El lenguaje: caracteres, operadores, y construcciones
- 5

El punto en regex: selecciona cualquier carácter
09:55 min - 6

\d \w \s: las 3 clases que localizan todo
13:55 min - 7

Cuantificadores regex: *, + y ? en acción
17:42 min - 8

Contadores en expresiones regulares
Viendo ahora - 9

Greedy vs lazy en regex: cuándo usar cada uno
07:47 min - 10

Negaciones con gorrito en expresiones regulares
06:49 min - 11

Cómo detectar números telefónicos sin letras
01:06 min - 12

Cómo procesar archivos CSV con millones de líneas
08:00 min
Uso práctico de Expresiones Regulares
- 13

Filtrar logs gigantes con expresiones regulares
07:22 min - 14

Expresiones regulares para URLs HTTP
08:07 min - 15

Regex para validar teléfonos con separadores y extensiones
12:30 min - 16

Validación de emails con regex
13:42 min - 17

Validación de coordenadas GPS con regex
17:16 min - 18

Validar nombres propios con regex
03:21 min
Usos avanzados en Expresiones Regulares
Expresiones Regulares en lenguajes de programación
- 20

Cómo extraer variables de URLs con regex
10:48 min - 21

Regex en múltiples lenguajes con CSV real
03:29 min - 22

Perl: CSV de fútbol en cero segundos
23:35 min - 23

Expresiones regulares en PHP: preg_match con CSV
09:29 min - 24

Extraer empates de archivos masivos con PHP
16:25 min - 25

Python regex para análisis de archivos CSV
21:58 min - 26

Lectura de archivos con BufferedReader en Java
07:59 min - 27

Escapar regex en Java: doble barra
08:48 min - 28

Validación de emails en JavaScript con regex
17:35 min - 29

Grep: filtra archivos masivos con regex
08:18 min
Domina los contadores en expresiones regulares para pasar de búsquedas generales a coincidencias precisas. Aquí verás cómo controlar repeticiones exactas con {m,n}, construir clases de separadores y validar formatos como teléfonos, manteniendo el patrón claro, flexible y escalable.
¿Cómo usar contadores {m,n} para controlar repeticiones?
Los contadores permiten especificar cuántas veces debe repetirse un patrón. La forma {m,n} define cota inferior y cota superior: mínimo m y máximo n. También puedes fijar un único valor repitiéndolo: {2,2} significa exactamente dos.
- Exacto con dígitos: dos dígitos seguidos.
\d\d
- Exacto con llaves: igual que arriba, pero explícito con contadores.
\d{2,2}
- Rango mínimo a máximo: de dos a cinco dígitos.
\d{2,5}
- Rango abierto superior: cuatro o más dígitos.
\d{4,}
El motor busca el match más grande dentro del rango permitido, por eso con {2,10} agrupa lo máximo posible antes de romper por un carácter no válido. Algunos lenguajes aceptan {2} como exacto; otros exigen {2,2}. Mantener {m,n} en ambos casos es seguro y claro.
¿Qué papel juegan \d, \w y las clases en la precisión?
Los atajos y las clases de caracteres brindan legibilidad y control. \d representa dígitos y \w representa caracteres de palabra (letras, números y guion bajo). Con contadores, impones longitud mínima y máxima.
- Usuario de 4 a 10 caracteres de palabra.
\w{4,10}
- Letras seguidas de longitud variable usando rango abierto.
\w{4,}
Para combinar separadores o símbolos, crea una clase de caracteres con corchetes. Recuerda que algunos símbolos son reservados y deben escaparse, como guion y punto.
- Clase de separadores con guion, punto y espacio.
[\-\. ]
- Separador opcional con símbolo de interrogación.
[\-\. ]?
El símbolo de interrogación ? indica “cero o una vez”. Su equivalente con contador es {0,1}, útil cuando prefieres explicitar la cuenta tras una clase o patrón.
¿Cómo funciona ? frente a {0,1}?
Ambos logran que un elemento sea opcional. Usa ? para brevedad sobre un carácter o clase, o {0,1} para reforzar la idea de conteo explícito sin cambiar el match.
¿Cómo validar teléfonos con separadores opcionales y caracteres reservados?
Se pueden capturar números en bloques de dos dígitos, repitiéndolos y permitiendo separadores opcionales. Así cubres entradas con guiones, puntos, espacios o sin separadores.
- Dos dígitos con separador opcional, repetido tres veces (ejemplo didáctico para 6 dígitos):
\d{2}[\-\. ]?\d{2}[\-\. ]?\d{2}
- Para 10 dígitos en parejas de dos, repite el patrón cinco veces. Cada bloque acepta “guion, punto o espacio” como separador, o ninguno si no aparece.
Puntos clave del patrón de teléfonos:
- Escape de reservados: guion y punto se escriben como - y . en clases.
- Separadores opcionales: añade ? tras la clase [-. ].
- Entrada flexible: admite “123456”, “12-34-56”, “12.34.56” o “12 34 56”.
- Búsqueda progresiva: el match toma la secuencia más larga válida sin incluir caracteres ajenos, como letras.
Si el dato trae formato, puedes removerlo en el lenguaje que uses (JavaScript, etc.) y validar con un patrón exclusivo de dígitos, por ejemplo exactamente 10:
\d{10,10}
¿Cómo ampliar o ajustar reglas sin romper el patrón?
- Agrega nuevos separadores dentro de la misma clase.
- Modifica la longitud cambiando los contadores {m,n}.
- Sustituye ? por {0,1} si prefieres conteo explícito.
Con estas piezas, ya controlas: repeticiones exactas, rangos, rangos abiertos, clases personalizadas, escape de símbolos y opcionalidad. En la continuación se explora el uso de ? en modo lazy para controlar la avidez del match.
¿Te gustaría ver más ejemplos con otros formatos o validar entradas reales de usuarios? Cuéntame qué patrón necesitas y lo armamos juntos.