Funcionamiento del Probador de Expresiones Regulares
Esta herramienta permite probar expresiones regulares de JavaScript contra un texto de ejemplo directamente en el navegador web. El sistema procesa la entrada en tiempo real, resaltando cada coincidencia y grupo de captura de forma instantánea para mostrar cómo se comporta el patrón con diferentes textos de prueba.
La evaluación se realiza de manera local. El patrón introducido y el texto de prueba se procesan en el navegador del usuario, por lo que no se sube nada a BroBroGo.
Configuración de patrones y marcas de búsqueda
Para realizar una prueba, se deben definir dos elementos principales en la interfaz: el patrón y las marcas (o flags) de la expresión regular.
El campo Patrón recibe la expresión regular que se desea evaluar, utilizando como ejemplo de marcador de posición el valor \d+. Junto a este campo, se pueden activar o desactivar las siguientes marcas de configuración, que alteran el comportamiento del motor de búsqueda de JavaScript:
- g (Global): Busca todas las coincidencias en el texto en lugar de detenerse tras encontrar la primera.
- i (Sin distinción entre mayúsculas y minúsculas): Ignora las diferencias entre caracteres en mayúscula y minúscula durante la evaluación.
- m (Multilínea): Modifica el comportamiento de los metacaracteres de inicio
^y fin$, haciendo que coincidan con el principio y el final de cada línea individual en lugar de limitarse al inicio y fin de toda la cadena de texto. - s (El punto también coincide con saltos de línea): Permite que el carácter comodín punto
.coincida también con los caracteres de salto de línea.
El texto sobre el que se aplicará la búsqueda se introduce en el campo Texto de prueba, que muestra el marcador de posición "Pega o escribe el texto contra el que probar tu patrón".
Interpretación de los resultados y grupos de captura
Una vez introducidos los datos, la herramienta genera de forma automática los siguientes bloques de salida:
- Coincidencias resaltadas: El texto de prueba original con marcas visuales sobre cada una de las coincidencias encontradas.
- Coincidencias: Un listado detallado con cada uno de los resultados individuales. Si la expresión regular contiene paréntesis de captura, cada coincidencia desglosará sus respectivos grupos bajo la etiqueta Grupo
{n}, donde{n}representa el número de índice del grupo capturado. - Coincidencias:
{count}: Un indicador que muestra el número total de coincidencias halladas en el texto. - Caracteres: Muestra la longitud del texto evaluado mediante el recuento de sus caracteres.
Reglas de evaluación y límites del sistema
El motor de pruebas aplica reglas específicas para gestionar el rendimiento y controlar el volumen de datos procesados en el navegador:
- Ausencia de resultados: Si el patrón no encuentra ninguna correspondencia en el texto de prueba, la herramienta muestra el mensaje "Sin coincidencias.".
- Errores de sintaxis: Si la expresión regular contiene errores de construcción que impiden su compilación en JavaScript, se muestra el aviso "Expresión regular no válida.".
- Límite de tiempo de ejecución: Para evitar el bloqueo del navegador por patrones ineficientes, si el proceso de emparejamiento tarda más de 2 segundos, la herramienta cancela la operación y muestra el mensaje: "Este patrón está tardando demasiado — puede tener un retroceso catastrófico. Intenta simplificarlo.".
- Comportamiento sin marca global: Si la marca g no está seleccionada, el motor solo devuelve la primera coincidencia encontrada.
- Límites con marca global: Cuando la marca g está activa, la herramienta limita la búsqueda a un máximo de 1.000 coincidencias y restringe la visualización en la interfaz a un máximo de 100 tarjetas de coincidencia. Cuando se superan estos límites de visualización, aparece la nota informativa "Mostrando las primeras
{max}.". - Limpieza de datos: Al pulsar el botón "Borrar", todos los campos se restablecen y la herramienta muestra el mensaje "Borrado.".
El problema del retroceso catastrófico
El retroceso catastrófico (catastrophic backtracking) es un problema de rendimiento que ocurre en ciertos motores de expresiones regulares, incluido el de JavaScript, cuando un patrón con cuantificadores anidados o ambiguos (como (a+)+) se aplica sobre una cadena que casi coincide, pero falla al final.
Ante esta situación, el motor evalúa de forma recursiva un número exponencial de combinaciones posibles antes de determinar que no existe coincidencia. Esto consume los recursos de procesamiento de la CPU y puede llegar a congelar la pestaña del navegador. La herramienta previene este bloqueo interrumpiendo cualquier evaluación que exceda el límite de seguridad de 2 segundos.
Preguntas frecuentes
¿Es seguro pegar mi texto aquí?
Sí. La coincidencia ocurre por completo en tu navegador — nada se envía a BroBroGo.
¿Qué significan las marcas g/i/m/s?
g busca todas las coincidencias, no solo la primera. i ignora mayúsculas y minúsculas. m hace que ^ y $ coincidan con el inicio y fin de cada línea en lugar de toda la cadena. s permite que el punto también coincida con saltos de línea.
¿Por qué dice que mi patrón está tardando demasiado?
Algunos patrones provocan un retroceso catastrófico — el motor prueba un número exponencial de combinaciones antes de rendirse, lo que puede congelar una pestaña del navegador. Esta herramienta cancela la coincidencia tras 2 segundos si eso ocurre, así que la página no se bloquea. Intenta simplificar repeticiones anidadas como (a+)+.