Probador de regex
Compruebe un patrón tal como lo ejecutará su navegador: hello en hello world da una coincidencia en la posición 0, con sus grupos numerados y con nombre. Pase al modo de reemplazo para ensayar una sustitución antes de tocar datos reales. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Patrón
- hello
- Texto
- hello world
- Indicadores
- Cantidad
- 1
¿Necesita un probador de regex ECMAScript fiable para patrones, capturas y reemplazos? Esta herramienta usa el mismo motor que su navegador: flags g, i, m, s, u e y, resultados de match con grupos numerados y nombrados, y plantillas de replace con $$, $&, $n y $<name>.
Modo match y grupos de captura
En modo match la respuesta lista cada hallazgo con el texto completo del match, el índice de inicio en unidades UTF-16 que usa JavaScript, los grupos de captura numerados en orden de apertura y los grupos nombrados cuando el patrón los declara. Sin la flag global obtiene como máximo un match, igual que RegExp.prototype.exec en una sola búsqueda. Con g el motor recorre matches no solapados y avanza lastIndex tras cada acierto.
Sticky y debe casar exactamente en el índice actual y no salta espacios ni otros caracteres; por eso gy sobre palabras separadas por blancos suele devolver solo el primer token. Los matches vacíos se avanzan de forma segura para que un patrón no gire sin fin sobre éxitos de longitud cero.
Plantillas de replace
El modo replace usa la tabla de sustitución de ECMAScript que implementa String.prototype.replace con una plantilla de cadena, no con una función callback. Si no hay match, el resultado es idéntico al texto sujeto, count vale cero y matched es false, lo que facilita afirmar la identidad en automatización. Prefiera el mismo patrón y flags que pegaría en un editor de código para que la vista previa del cliente y los trabajos del servidor no diverjan.
Cuando necesite saber cuántas sustituciones aplicarían, el campo count refleja el modo match para el mismo patrón, flags y texto antes de aplicar la cadena de reemplazo.
Flags, patrones inválidos y límites
Solo se aceptan las seis flags g, i, m, s, u e y, cada una como máximo una vez. Los límites de longitud protegen la pestaña del navegador y el worker: el patrón puede tener como máximo mil caracteres, el texto cien mil y una sola llamada puede producir como máximo diez mil matches. La flag unicode u hace que el punto y las clases operen sobre code points; sin u un emoji puede ocupar dos unidades UTF-16, el mismo comportamiento sutil que ya encuentran los desarrolladores en JavaScript.
Qué puede hacer con ella
Depurar patrones antes de publicar
Pegue logs o entradas de formulario y confirme grupos e índices antes de llevar el regex a producción.
Enseñar y documentar regex
Muestre match y replace con las mismas reglas ECMAScript que se usan en JavaScript.
Bordes sticky y global
Inspeccione cómo interactúan y y g con espacios y matches vacíos sin adivinar rarezas del navegador.
Preguntas frecuentes
¿El probador de regex online es gratis?
Sí. La herramienta del navegador corre en local sin coste.
¿Qué flavor de regex usa?
RegExp ECMAScript, el mismo motor de navegadores modernos y Node. No es PCRE ni Python re.
¿Por qué solo obtengo una coincidencia?
Sin la bandera g la búsqueda se detiene en la primera coincidencia, igual que una búsqueda simple en JavaScript. Con g, el probador recorre todas las coincidencias del texto sin que se solapen.
¿Cómo reutilizo un grupo capturado en el reemplazo?
Use $& para la coincidencia completa, el signo de dólar seguido del número de grupo para un grupo numerado y $<name> para un grupo con nombre. Escriba $$ cuando necesite un signo de dólar literal.
¿Por qué la bandera y se detiene tras la primera palabra?
Con y, la coincidencia debe empezar justo donde terminó la anterior y no puede saltarse espacios ni otros caracteres. Por eso, con gy sobre palabras separadas por espacios, a menudo solo aparece la primera.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/regex-tester \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pattern":"\\w+","text":"hello world"}'const res = await fetch("https://api.kit.forhosting.com/dev/regex-tester", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pattern": "\\w+",
"text": "hello world"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/regex-tester",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pattern": "\\w+",
"text": "hello world"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/regex-tester", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pattern":"\\\\w+","text":"hello world"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pattern":"\\w+","text":"hello world"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/regex-tester", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"pattern": "\\w+",
"text": "hello world"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.regex_tester",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_pattern_chars | 1000 |
max_text_chars | 100000 |
max_matches | 10000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Modo match y grupos de captura
Un grupo opcional que no participa se devuelve como null en JSON para que las ranuras del array sean estables en scripts y pruebas.
Plantillas de replace
El doble dólar se convierte en un signo de dólar literal, $& inserta el match completo, $1 a $99 insertan capturas numeradas cuando esos grupos existen y $<name> inserta una captura nombrada definida en el patrón.
Flags, patrones inválidos y límites
Cualquier otro carácter o un duplicado devuelve un error tipado invalid_input en lugar de dejar que el motor lance una excepción.
Casos de integración
Vista previa de reemplazos
Pruebe plantillas en una muestra corta y luego llame a la API con el mismo contrato desde un flujo.
Preguntas técnicas
¿Qué flags admite?
g, i, m, s, u e y. Otras flags o duplicadas devuelven invalid_input.
¿Cómo se devuelven los grupos opcionales?
Como null en el array groups (y en named si aplica), nunca omitidos ni como undefined en JSON.
¿Qué pasa si el patrón es inválido?
Recibe invalid_input con un mensaje que empieza por Regex inválida, no un SyntaxError sin tipar.
¿Cuáles son los límites de tamaño?
Patrón ≤ 1000 caracteres, texto ≤ 100000 caracteres y como máximo 10000 matches por petición.