logo
GeekFormat

Probador de Expresiones Regulares

Regex Tester
//
无匹配
Worker · 500ms 超时中断
分类模板库
点选即可填充 pattern / flags / demo
测试文本37
匹配详情
0

还没有匹配结果

输入正则与文本后,这里会展示每个匹配、捕获组和命名分组。

匹配高亮预览· Hover / 点击右侧条目联动
Ada Lovelace Alan Turing Grace Hopper

统计

匹配数量
0
执行耗时
0ms
捕获组
0
命名分组
0

命名分组汇总

当前没有命名分组。

Probador de expresiones regulares (Regex Tester) gratuito en línea, compatible con pruebas de coincidencia en tiempo real de JS, visualización de grupos de captura/grupos con nombre, vista previa de reemplazo, explicación de sintaxis regex, con protección de tiempo de espera anti-ReDoS integrada mediante Web Worker y biblioteca de plantillas regex comunes, ideal para que los desarrolladores depuren y validen expresiones regulares rápidamente.

Relacionado

Casos de uso

  • Probar en línea si expresiones regulares para correo, teléfono, DNI, URL, etc. son correctas al desarrollar reglas de validación de formularios
  • Extraer marcas de tiempo, mensajes de error y direcciones IP de registros de nivel ERROR/INFO usando regex al analizar logs
  • Previsualizar efectos de reemplazo regex durante la limpieza de datos/ETL, como conversión de formatos de fecha, enmascaramiento de información sensible (asteriscos en medio de números de teléfono)
  • Verificar si las regex de extracción de contenido coinciden exactamente con fragmentos HTML o campos JSON objetivo al escribir rastreadores web
  • Comprender el significado de cada metacarácter y cuantificador a través del panel「Explicación」al aprender expresiones regulares, y familiarizarse rápidamente con las plantillas
  • Enviar expresiones regulares cuestionables a colegas mediante enlace para compartir durante Code Review, para depurar y optimizar juntamente

Características

  • Ejecución en sandbox Web Worker: las regex se ejecutan en un hilo Worker independiente con interrupción automática por tiempo de espera de 500 ms, previniendo completamente que ReDoS bloquee el navegador
  • Coincidencia en tiempo real + resaltado de colores: los resultados se muestran instantáneamente al escribir, con 5 colores para distinguir diferentes coincidencias, y panel de detalles vinculado al pasar el cursor
  • Grupos de captura + grupos con nombre: cada coincidencia se expande automáticamente para mostrar todos los grupos de captura ($1/$2) y grupos con nombre ($<name>), con estadísticas resumidas
  • Vista previa de reemplazo: ingresa una cadena de reemplazo para ver una vista previa en tiempo real, compatible con botones rápidos para la sintaxis $1/$&/$`/$'/$<name>
  • Explicación de sintaxis regex: analiza automáticamente la expresión regular y explica elemento por elemento el significado de metacaracteres, cuantificadores, grupos, anclajes, etc.
  • 12 plantillas comunes: incluye 12 plantillas regex frecuentes como correo/URL/teléfono/chino/IPv4/UUID/fecha/logs/etiquetas HTML, rellenables con un clic
  • Alternancia de 6 indicadores: botones visuales para alternar g/i/m/s/u/y, sin necesidad de memorizar la sintaxis
  • Enlace para compartir: genera una URL que incluye pattern/flags/text con un clic, cópiala a colegas para reproducir directamente el escenario de prueba
  • Estadísticas de ejecución: muestra en tiempo real el número de coincidencias, tiempo de ejecución (ms), total de grupos de captura y cantidad de grupos con nombre
  • Límite de 1500 coincidencias: truncamiento automático para evitar bloqueos de página por texto demasiado largo, y mensajes de error amigables para regex con errores de sintaxis

Cómo Usar

  1. Ingresa una expresión regular en el campo de entrada entre / / en la parte superior (no es necesario agregar barras inclinadas tú mismo), ingresa los indicadores (como g, gi, gim) a la derecha o haz clic en los botones de abajo para alternarlos
  2. Pega o ingresa el contenido de texto a coincidir en el área「Texto de prueba」; los resultados de coincidencia se resaltarán en colores en tiempo real
  3. Haz clic en el panel「Detalles de coincidencia」a la derecha para ver la posición, contenido, grupos de captura y grupos con nombre de cada coincidencia
  4. Cambia a la pestaña「Área de reemplazo」, ingresa una cadena de reemplazo (compatible con referencias como $1/$&/$<name>) y obtén una vista previa del resultado del reemplazo en tiempo real
  5. Cambia a la pestaña「Explicación de expresión」para ver la explicación elemento por elemento de la sintaxis regex generada automáticamente
  6. Cuando necesites plantillas comunes, haz clic en「Biblioteca de plantillas por categoría」a la izquierda para seleccionar la plantilla correspondiente y rellenarla con un clic; después de depurar, haz clic en「Compartir」para generar un enlace

Preguntas Frecuentes

¿Qué es ReDoS? ¿Por qué las pruebas regex necesitan protección contra ReDoS?

ReDoS (Regular Expression Denial of Service, Denegación de Servicio por Expresiones Regulares) ocurre cuando ciertas expresiones regulares maliciosamente construidas (como `(a+)+$` al coincidir cadenas largas) provocan retroceso catastrófico (catastrophic backtracking), lo que causa un uso de CPU del 100%, bloqueo del navegador o caída del servidor. Esta herramienta ejecuta la coincidencia regex en un sandbox de Web Worker con un tiempo de espera automático de 500 ms, por lo que incluso si ingresas una expresión maliciosa que provoque retroceso, no bloqueará tu navegador; esta es la característica de seguridad principal de esta herramienta.

¿Qué significan los seis indicadores g, i, m, s, u, y en las expresiones regulares?

g (global) coincidencia global, busca todas las coincidencias en lugar de solo la primera; i (ignoreCase) ignora mayúsculas y minúsculas; m (multiline) modo multilínea, hace que ^ y $ coincidan con el inicio/final de cada línea; s (dotAll) hace que el punto . coincida con todos los caracteres, incluidos los saltos de línea; u (unicode) modo Unicode, procesa correctamente emojis y caracteres multibyte; y (sticky) coincidencia adherente, coincide exactamente desde la posición lastIndex. Esta herramienta proporciona botones visuales para alternar los 6 indicadores; haz clic para activarlos/desactivarlos en tiempo real.

¿Qué son los grupos de captura y los grupos con nombre? ¿Cómo se usan?

Los grupos de captura se envuelven entre paréntesis `(pattern)`, y después de la coincidencia se pueden extraer subcadenas usando referencias como $1, $2. Los grupos con nombre usan la sintaxis `(?<name>pattern)`, y después de la coincidencia se puede hacer referencia con `$<name>`, lo que mejora la legibilidad del código. Por ejemplo, después de coincidir una fecha con `(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})`, puedes reformatearla en la cadena de reemplazo con `$<year>年$<month>月$<day>日`. Esta herramienta lista automáticamente los resultados de los grupos de captura y grupos con nombre de cada coincidencia.

¿Qué sintaxis regex de lenguajes de programación son compatibles?

Esta herramienta se basa en el motor RegExp nativo de JavaScript y es ampliamente compatible con la sintaxis de los motores principales como JS/TypeScript, el módulo re de Python, java.util.regex de Java, PHP preg_*, Go regexp (todos basados en la corriente PCRE/Perl). Las principales diferencias están en algunas características avanzadas (como la sintaxis de grupos con nombre `(?P<name>)` en Python, lookbehind de longitud variable en .NET). El 99% de las expresiones regulares en el desarrollo diario (validación/extracción de correos, teléfonos, URL, fechas, etc.) son universales entre motores, y puedes probarlas directamente en esta herramienta y luego copiarlas a tu código.

¿Cómo compartir una expresión regular probada con colegas?

Haz clic en el botón「Compartir」en la barra de herramientas superior; la herramienta codificará automáticamente la expresión regular actual, los indicadores y el texto de prueba en los parámetros de la URL, y copiará el enlace al portapapeles. Cuando tus colegas abran el enlace, verán exactamente el mismo estado de prueba (pattern+flags+testText), lo que es ideal para la colaboración en equipo y la depuración remota.

¿Qué significan los símbolos especiales $1, $&, $`, $' en las cadenas de reemplazo?

En las cadenas de reemplazo: $1, $2... representan el enésimo grupo de captura; $& representa todo el texto coincidente; $` representa la parte antes del texto coincidente; $' representa la parte después del texto coincidente; $$ representa el literal $; $<name> representa un grupo con nombre. Por ejemplo, reemplazar `(\d{4})-(\d{2})-(\d{2})` con `$2/$3/$1` convierte 2026-03-12 en 03/12/2026. El área de reemplazo de esta herramienta proporciona botones de inserción rápida para estos símbolos especiales.

¿Qué es una Expresión Regular (Regex/RegExp)?

Una expresión regular (abreviada como Regex/RegExp) es un lenguaje de patrones de texto que utiliza una sola cadena para describir y coincidir con una serie de cadenas que cumplen ciertas reglas sintácticas. Su historia se remonta a la década de 1950, cuando el neurólogo Warren McCulloch y el matemático Walter Pitts propusieron un modelo matemático de neuronas; más tarde, el matemático Stephen Kleene propuso en 1956 una descripción algebraica de「conjuntos regulares」basada en ello. Ken Thompson, padre de Unix, implementó por primera vez expresiones regulares en el editor QED a fines de la década de 1960, y desde entonces las expresiones regulares se convirtieron en una funcionalidad central de la cadena de herramientas de Unix (grep, sed, awk, vi).

En los lenguajes de programación modernos, las expresiones regulares son casi una capacidad estándar: RegExp de JavaScript, el módulo re de Python, java.util.regex de Java, la clase Regex de .NET, el paquete regexp de Go brindan soporte regex. Las expresiones regulares se utilizan ampliamente en validación de formularios (correo/teléfono/DNI), búsqueda y reemplazo de texto (buscar y reemplazar en editores), análisis de logs (extraer logs ERROR), rastreo web (extracción de contenido HTML), limpieza de datos (ETL), coincidencia de rutas, filtrado de entrada y protección de seguridad (reglas WAF), entre otros escenarios.

Los conceptos centrales de las expresiones regulares incluyen: clases de caracteres (\d dígitos, \w caracteres de palabra, \s espacios en blanco), cuantificadores (* cero o más, + uno o más, ? cero o uno, {n,m} número específico), anclajes (^ inicio, $ final, \b límite de palabra), grupos ((...) grupo de captura, (?:...) grupo sin captura, (?<name>...) grupo con nombre), alternancia (|), conjuntos de caracteres ([a-z]), aserciones de búsqueda ((?=...) búsqueda positiva hacia adelante, (?!) búsqueda negativa hacia adelante), etc. Dominar regex puede mejorar enormemente la eficiencia del procesamiento de texto, pero también debes tener cuidado de evitar trampas de rendimiento como ReDoS.

术语表

Regex / RegExp
Abreviatura de Regular Expression (expresión regular), una sintaxis de cadena que describe patrones de coincidencia de texto, utilizada para buscar, reemplazar y validar texto.
Grupo de Captura (Capture Group)
Subexpresión envuelta en paréntesis (pattern), los resultados coincidentes se pueden referenciar por posición mediante $1, $2.
Grupo con Nombre (Named Group)
Grupo de captura definido con la sintaxis (?<name>pattern), se puede referenciar por nombre mediante $<name>, con mayor legibilidad que las referencias numéricas.
ReDoS
Regular Expression Denial of Service (denegación de servicio por expresión regular), causado por retroceso catastrófico que hace que el tiempo de ejecución regex crezca exponencialmente, bloqueando el navegador o servidor.
Retroceso (Backtracking)
Mecanismo del motor NFA por el cual, cuando un intento de coincidencia falla, retrocede a posiciones anteriores para probar otras posibilidades; regex complejas pueden provocar retroceso exponencial.
Indicadores (Flags)
Parámetros que modifican el comportamiento de coincidencia regex; comunes son g(global), i(ignorar may/min), m(multilínea), s(dotAll), u(Unicode), y(adherente).
Aserciones de Búsqueda (Lookaround)
Aserciones de ancho cero, que incluyen búsqueda positiva hacia adelante (?=...), búsqueda negativa hacia adelante (?!...), búsqueda positiva hacia atrás (?<=...), búsqueda negativa hacia atrás (?<!...), solo juzgan la posición sin consumir caracteres.
PCRE
Perl Compatible Regular Expressions (expresiones regulares compatibles con Perl), un estándar de sintaxis regex ampliamente utilizado adoptado por la mayoría de lenguajes como PHP, Java, Python.
Web Worker
API del navegador que proporciona hilos en segundo plano independientes del hilo principal; esta herramienta la usa para ejecutar regex en Workers, de modo que incluso si ocurre ReDoS no se bloquea la UI.
Cuantificador (Quantifier)
Sintaxis que especifica cuántas veces se repite el elemento anterior: *(0 o más), +(1 o más), ?(0 o 1), {n}(exactamente n veces), {n,m}(n a m veces).

Tabla de referencia rápida de metacaracteres regex comunes

MetacarácterSignificadoEjemplo explicativo
.Cualquier carácter individual (excepto salto de línea; con indicador s incluye saltos de línea)a.c coincide con abc, aXc, no coincide con a\nc
\dCarácter de dígito, equivalente a [0-9]\d{3} coincide con 123, 456
\wCarácter de palabra, equivalente a [A-Za-z0-9_]\w+ coincide con hello_123
\sCarácter de espacio en blanco (espacio/tabulador/salto de línea, etc.)a\sb coincide con a b (espacio en medio)
^Inicio de cadena (con indicador m es inicio de línea)^Hello coincide con Hello al inicio de línea
$Final de cadena (con indicador m es final de línea)end$ coincide con end al final de línea
\bLímite de palabra\bcat\b coincide con la palabra independiente cat, no con category
*El elemento anterior se repite 0 o más veces (codicioso)ab*c coincide con ac, abc, abbc
+El elemento anterior se repite 1 o más vecesab+c coincide con abc, abbc, no con ac
?El elemento anterior 0 o 1 vez (o usado para no codicioso/aserciones)colou?r coincide con color y colour
|Alternancia/o, coincide con la izquierda o la derechacat|dog coincide con cat o dog
[...]Conjunto de caracteres, coincide con cualquiera de ellos[aeiou] coincide con cualquier vocal

Plantillas de referencia rápida de expresiones regulares comunes

UsoExpresión regularIndicadores recomendados
Dirección de correo[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}g
Número móvil China continental1[3-9]\d{9}g
Enlace URLhttps?:\/\/[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b[-a-zA-Z0-9()@:%_+.~#?&/=]*gi
Dirección IPv4\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\bg
Fecha YYYY-MM-DD\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])g
DNI (18 dígitos)[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx]g
UUID[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}gi

Code Examples

Coincidencia y reemplazo regex en JavaScript

// Validar formato de correo
const emailRe = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRe.test('user@example.com')); // true

// Extraer grupos con nombre (análisis de fechas)
const dateRe = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g;
const text = '会议时间:2026-03-12,截止:2026-04-01';
const matches = [...text.matchAll(dateRe)];
for (const m of matches) {
  console.log(m.groups.year, m.groups.month, m.groups.day);
}

// Reemplazo: conversión de formato de fecha YYYY-MM-DD → MM/DD/YYYY
const reformatted = text.replace(dateRe, '$<month>/$<day>/$<year>');
console.log(reformatted);
// Hora de reunión: 03/12/2026, plazo: 04/01/2026

Uso del módulo re en Python

import re

# Buscar todas las coincidencias
text = '联系:alice@example.com,bob@test.org'
emails = re.findall(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', text)
print(emails)  # ['alice@example.com', 'bob@test.org']

# Extracción con grupos con nombre (Python usa sintaxis ?P<name>)
date_pattern = r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})'
m = re.search(date_pattern, '发布于 2026-03-12')
if m:
    print(m.group('year'), m.group('month'), m.group('day'))

# Reemplazo: enmascarar los 4 dígitos centrales del número de teléfono
phone_re = r'(1[3-9]\d)\d{4}(\d{4})'
result = re.sub(phone_re, r'\1****\2', '手机号:13812345678')
print(result)  # Teléfono: 138****5678

Uso de java.util.regex en Java

import java.util.regex.*;

class RegexDemo {
    public static void main(String[] args) {
        String text = "Error [2026-03-12 18:05:09] Connection failed";

        // Compilar regex (en producción se debe cachear la instancia Pattern)
        Pattern p = Pattern.compile(
            "(?<level>INFO|WARN|ERROR)\\s+\\[(?<time>[^\\]]+)\\]\\s+(?<message>.+)"
        );
        Matcher m = p.matcher(text);

        if (m.find()) {
            System.out.println("级别: " + m.group("level"));
            System.out.println("时间: " + m.group("time"));
            System.out.println("消息: " + m.group("message"));
        }

        // Reemplazar todos los dígitos
        String cleaned = "abc123def456".replaceAll("\\d+", "*");
        System.out.println(cleaned); // abc*def*
    }
}

Authoritative References