PK Systems
Ferramentas para devs

Testador de Regex

Construa, teste e depure expressões regulares JavaScript com destaque ao vivo, modo replace e padrões prontos.

Testador de Regex

Saída

Prévia destacada
Correspondências

    O que é uma expressão regular?

    Uma expressão regular (regex) é uma minilinguagem para buscar e transformar texto. Ela está por trás do find-in-files, análise de logs, regras de validação, lexers e da maioria dos search-and-replace dos editores. Esta ferramenta cria um RegExp ao vivo no seu navegador, roda contra o texto de teste e mostra cada correspondência além do destaque inline. Usa o motor JavaScript padrão, então o que funciona aqui funciona igual no Node.js e em qualquer navegador moderno.

    Como usar o testador

    Digite o padrão (sem as barras /.../ em volta) no campo, escolha as flags que precisa e cole o texto de teste abaixo. As correspondências ficam destacadas na prévia e aparecem listadas individualmente com a posição em caracteres. Ative o Modo replace para ver o resultado de String.prototype.replace() com a sua string de substituição — use $& para o match inteiro e $1, $2 para grupos de captura. Os chips de preset carregam padrões comuns no campo, então você pode ajustar em vez de começar do zero.

    Cola rápida de regex

    Os tokens mais úteis em um só lugar. Regex em JavaScript segue a sintaxe ECMAScript — próxima de PCRE, mas com algumas omissões (sem quantificadores possessivos, sem padrões recursivos).

    Token Significado
    .Qualquer caractere (exceto quebra de linha, a não ser com a flag s)
    \d \w \sDígito, caractere de palavra (letras/dígitos/_), espaço
    ^ $Início da string, fim da string (por linha com a flag m)
    * + ?Zero ou mais, um ou mais, zero ou um (gananciosos por padrão)
    {n,m}Entre n e m repetições
    [abc]Qualquer caractere do conjunto; use [^abc] para negar
    (...)Grupo de captura; use (?:...) para um grupo sem captura
    |Alternância — combina qualquer um dos lados

    Perguntas frequentes

    Qual motor de regex isso usa?
    O motor JavaScript do seu navegador — V8 no Chrome/Edge, SpiderMonkey no Firefox, JavaScriptCore no Safari. Os três implementam a especificação de regex do ECMAScript, então o comportamento é consistente entre navegadores e idêntico ao Node.js. Recursos exclusivos do PCRE, como padrões recursivos e quantificadores possessivos, não são suportados.
    O que cada flag significa?
    g busca todas as correspondências (não só a primeira). i ignora maiúsculas/minúsculas. m faz ^ e $ casarem com início/fim de linha. s deixa . casar com quebras de linha. u liga o modo Unicode completo (necessário para propriedades como \p{Letter}). y é sticky — o match precisa começar exatamente em lastIndex.
    Algo é enviado para um servidor?
    Não. O padrão, o texto de teste e a substituição são todos avaliados localmente com new RegExp() e String.prototype.replace(). Abra DevTools > Network e confirme: nenhuma requisição é feita enquanto você digita. Seguro para trechos de log, dados internos ou qualquer coisa que você não colaria em um sandbox de regex hospedado.
    Por que minha regex está lenta ou travando a página?
    Backtracking catastrófico. Padrões com quantificadores aninhados como (a+)+ ou (.*)* podem rodar por bilhões de passos em entradas que quase casam. Evite aninhar +/*; prefira alternativas como [^x]+ ou ancore o padrão. O testador limita matches descontrolados em 50.000 iterações para a página não congelar.
    Como uso grupos de captura no modo replace?
    Coloque partes do padrão entre parênteses — eles viram grupos numerados: $1, $2, etc. Exemplo: padrão (\w+)@(\w+) com substituição $2 / $1 troca o usuário pelo domínio em um e-mail. $& é o match inteiro, $$ imprime um $ literal. Grupos nomeados (?<nome>...) podem ser usados como $<nome>.
    Por que ^ e $ não casam em cada linha?
    Por padrão ^ casa só no início absoluto da string e $ só no fim absoluto — não em cada linha. Adicione a flag m (multiline) e eles passam a casar quebras de linha. Se você também precisa que . case com quebras de linha (por exemplo, para capturar entre linhas), adicione a flag s (dotAll).