Idioma: Español

tools / regex

regex/

Probador de regex de JavaScript en vivo: resalta coincidencias, lista grupos de captura y previsualiza reemplazos.

Predefinidos

Texto de prueba

Coincidencias resaltadas


      

Lista de coincidencias

#PosiciónCoincidenciaGrupos

Reemplazar

Preguntas frecuentes

¿Qué motor de expresiones regulares usa y es igual que Python o PCRE?

Usa el motor de expresiones regulares de JavaScript integrado en tu navegador, así que la sintaxis difiere un poco de Python, PCRE y Java. Los grupos con nombre se escriben (?<name>...) y no (?P<name>...) como en Python; los indicadores en línea como un (?i) inicial no están soportados, así que marca el indicador i; tampoco existen los cuantificadores posesivos ni los grupos atómicos. Que funcione una sintaxis más reciente, como el lookbehind (aserción retrospectiva), depende de tu navegador.

¿Por qué no coincide una expresión regular que copié de código?

Lo más probable es que se hayan copiado también las barras que la rodean, los indicadores finales o las barras invertidas de escape. En el cuadro del patrón escribe solo lo que hay entre las dos barras y marca a la derecha indicadores como g e i. Si copiaste desde una cadena de JavaScript, cambia \\d+ por \d+, porque el cuadro no necesita que las barras invertidas se escapen una segunda vez.

¿Por qué solo obtengo una coincidencia, o por qué ., ^ y $ se comportan de forma rara?

Revisa primero los indicadores junto al cuadro del patrón. Sin g, solo se toma la primera coincidencia, y el encabezado de la lista lo indica. El punto no coincide con saltos de línea salvo que marques s; ^ y $ solo coinciden con el inicio y el final de todo el texto salvo que marques m para coincidir por líneas. y es el modo sticky: las coincidencias deben empezar al principio y seguirse unas a otras sin huecos, así que rara vez lo necesitas.

¿Qué hago ante el mensaje «La búsqueda tardó más de 1.5 s y se detuvo»?

La expresión regular retrocede demasiado con tu texto y hay que reescribirla. Un culpable típico es un cuantificador anidado como (a+)+, cuyo tiempo de ejecución se multiplica con un texto largo que no coincide. La página ejecuta la expresión regular en un hilo en segundo plano y la detiene a los 1.5 segundos, así que la propia página nunca se congela. Suele arreglarse concretando los cuantificadores, quitando el anidamiento o usando un rango de caracteres más estrecho.

¿Qué pasa si hay muchas coincidencias o el texto es muy largo?

El resaltado y la lista muestran como máximo las primeras 1000 coincidencias y avisan cuando hay más; el resultado del reemplazo no se ve afectado por ese tope. Cuando el texto supera los 200 000 caracteres, la página espera a que dejes de escribir unos 0.4 segundos antes de recalcular. No hay otro límite de longitud, así que la velocidad depende sobre todo de la propia expresión regular.

¿Cómo escribo la plantilla de reemplazo?

Sigue la sintaxis de reemplazo de JavaScript: $1 y $2 son grupos de captura numerados, $<name> es un grupo con nombre, $& es toda la coincidencia y $$ es un signo de dólar literal. Deja la plantilla vacía para eliminar lo que coincida. Sin el indicador g, solo se reemplaza la primera coincidencia.

¿Puedo usar tal cual los ejemplos predefinidos de número de teléfono y documento de identidad para validar?

Tómalos como punto de partida, no como validación estricta. El ejemplo de teléfono acepta 11 dígitos que empiezan por 1 y cuyo segundo dígito es de 3 a 9, y no contempla prefijos de país. El de documento de identidad solo comprueba el formato de 18 caracteres: acepta días del 01 al 31 en todos los meses, no verifica el dígito de control final y no comprueba el código de región con regiones reales. Los ejemplos de correo y URL solo cubren formas habituales, y el de URL acepta solo http y https. Al pulsar un ejemplo se reemplaza el patrón del cuadro y los indicadores se restablecen a solo g.

¿Se sube el texto que escribo?

No. La expresión regular se ejecuta en un hilo en segundo plano de tu navegador, y ni el texto de prueba, ni el patrón, ni la plantilla de reemplazo se envían a ningún servidor. La página tampoco guarda lo que escribes.