Testador de regex
Confira um padrão do jeito que o seu navegador vai executá-lo: hello em hello world dá uma correspondência na posição 0, com os grupos numerados e nomeados. Mude para substituição e veja o resultado antes de mexer em dados reais. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Padrão
- hello
- Texto
- hello world
- Flags
- Quantidade
- 1
Precisa de um testador de regex ECMAScript fiável para padrões, capturas e substituições? Esta ferramenta usa o mesmo motor do seu navegador: flags g, i, m, s, u e y, resultados de match com grupos numerados e nomeados, e modelos de replace com $$, $&, $n e $<name>.
Buscar: cada correspondência com posição e grupos
No modo de busca, cada correspondência aparece com o texto encontrado, a posição em que começa, contada como nas strings de JavaScript, os grupos numerados na ordem em que se abrem e os grupos nomeados, quando o padrão os declara. Sem a flag g você recebe no máximo uma correspondência; com g o motor avança pelas correspondências sem sobreposição. Correspondências vazias são puladas com segurança, então um padrão nunca fica girando sem parar. Com a flag u, o ponto e as classes de caracteres tratam um emoji como um único caractere, e não como duas unidades.
Substituir: o modelo de troca
No modo de substituição vale a tabela de troca padrão de JavaScript: $$ vira um cifrão literal, $& insere a correspondência inteira, um cifrão seguido do número de um grupo insere esse grupo, até o 99, e $<name> insere um grupo nomeado. Se nada corresponder, o resultado é o texto original, sem alterações, e a contagem fica em zero. A contagem é a mesma que o modo de busca daria para o mesmo padrão e o mesmo texto, o que mostra quantas trocas serão feitas antes de aplicá-las.
Modo match e grupos de captura
No modo match a resposta lista cada ocorrência com o match completo, o índice UTF-16 inicial, os grupos numerados e os nomeados opcionais. Sem a flag global obtém no máximo um match; com g percorre matches sem sobreposição; sticky y tem de casar no índice atual e não salta espaços.
Modelos de replace
Sem match, o resultado é o texto original e count é zero. Use o mesmo padrão e flags que colaria num editor para alinhar cliente e servidor.
Flags, padrões inválidos e limites
Só se aceitam g, i, m, s, u e y, sem duplicados. Com u, o ponto opera sobre code points; sem u, um emoji pode ocupar duas unidades UTF-16.
Casos de uso
Depurar padrões antes de publicar
Cole logs ou entradas de formulário e confirme grupos e índices antes de levar o regex a produção.
Ensinar e documentar regex
Mostre match e replace com as mesmas regras ECMAScript usadas em JavaScript.
Casos sticky e global
Veja como y e g interagem com espaços e matches vazios sem adivinhar quirks do browser.
Perguntas frequentes
O testador de regex online é gratuito?
Sim. A ferramenta no browser corre localmente sem custo.
Que flavor de regex é usado?
RegExp ECMAScript, o mesmo motor de browsers modernos e Node. Não é PCRE nem Python re.
Quais são os limites de tamanho?
Padrão ≤ 1000 caracteres, texto ≤ 100000 caracteres e no máximo 10000 matches por pedido.
Por que só aparece uma correspondência?
Sem a flag g a busca para na primeira correspondência, como uma busca simples em JavaScript. Com g, o testador percorre todas as correspondências do texto, sem sobreposição.
Por que a flag y para depois da primeira palavra?
Com y, a correspondência precisa começar exatamente onde a anterior terminou e não pode pular espaços nem outros caracteres. Por isso gy em palavras separadas por espaços costuma devolver só a primeira.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"pattern": "\\w+",
"text": "hello world"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.regex_tester",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_pattern_chars | 1000 |
max_text_chars | 100000 |
max_matches | 10000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Modo match e grupos de captura
Um grupo opcional que não participa devolve-se como null em JSON para as posições permanecerem estáveis.
Modelos de replace
O modo replace usa a tabela ECMAScript: $$ torna-se um dólar literal, $& é o match completo, $1–$99 são capturas numeradas quando existem e $<name> insere uma captura nomeada.
Flags, padrões inválidos e limites
Um padrão inválido nunca lança uma exceção crua do motor: recebe invalid_input tipado com mensagem clara. Os limites de comprimento protegem o separador: padrão até 1000 caracteres, texto até 100000 e no máximo 10000 matches por chamada.
Casos de integração
Pré-visualizar substituições
Experimente modelos numa amostra curta e depois chame a API com o mesmo contrato a partir de um pipeline.
Perguntas técnicas
Que flags são suportadas?
g, i, m, s, u e y. Outras flags ou duplicadas devolvem invalid_input.
Como são devolvidos os grupos opcionais?
Como null no array groups (e em named quando aplicável), nunca omitidos nem undefined em JSON.
O que acontece se o padrão for inválido?
Recebe invalid_input com uma mensagem que começa por Regex inválida, não um SyntaxError sem tipo.