Contadores en expresiones regulares

Clase 8 de 29Curso de Expresiones Regulares

Resumen

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.