Testador e Validador de Regex Online Gratuito - Teste Padrões Instantaneamente
Teste e valide expressões regulares online com destaque em tempo real. Testador de padrões regex gratuito com validação de sintaxe, resultados de correspondência e funcionalidade de salvamento. Teste regex agora!
Testador de Padrão Regex
Resultados de Correspondência
Digite um padrão e um texto de teste para ver os resultados
Salvar Padrão
Resultados de Correspondência
Digite um padrão e um texto de teste para ver os resultados
Padrões Salvos
Nenhum padrão salvo ainda
Guia de Símbolos Regex
.Corresponde a qualquer caractere, exceto nova linha\dCorresponde a qualquer dígito (0-9)\DCorresponde a qualquer caractere que não seja um dígito\wCorresponde a qualquer caractere de palavra (a-z, A-Z, 0-9, _)\WCorresponde a qualquer caractere que não seja de palavra\sCorresponde a qualquer caractere de espaço em branco\SCorresponde a qualquer caractere que não seja de espaço em branco^Corresponde ao início da linha$Corresponde ao final da linha*Corresponde a 0 ou mais do caractere anterior+Corresponde a 1 ou mais do caractere anterior?Corresponde a 0 ou 1 do caractere anterior{n}Corresponde exatamente a n do caractere anterior{n,}Corresponde a pelo menos n do caractere anterior{n,m}Corresponde entre n e m do caractere anterior[abc]Corresponde a qualquer um dos caracteres entre colchetes[^abc]Corresponde a qualquer caractere que não esteja entre colchetes(abc)Agrupa vários tokens e captura a correspondênciaa|bCorresponde a a ou b\bCorresponde a uma posição de limite de palavraDocumentação
O que é um testador de regex
Um testador de regex é uma ferramenta que confronta uma expressão regular com um trecho de texto e mostra o que ela encontra. Uma expressão regular, ou regex, é uma sequência curta de caracteres que descreve um padrão em um texto, como "três dígitos seguidos" ou "qualquer palavra que comece com letra maiúscula". Este validador de regex permite digitar um padrão e um texto de teste e ver as correspondências destacadas na hora, sem escrever nenhum código.
As expressões regulares são usadas em muitas linguagens de programação para pesquisar texto, verificar se os dados digitados pelo usuário estão no formato certo e extrair trechos específicos de um bloco maior de texto. A sintaxe é compacta, mas fácil de errar, por isso testar um padrão antes de usá-lo em um programa ajuda a detectar erros cedo.
Como testar uma expressão regular on-line
- Digite um padrão. Insira a regex no campo do padrão. A ferramenta verifica a sintaxe enquanto o usuário digita e mostra uma mensagem de erro se o padrão for inválido, por exemplo, se um colchete ou parêntese ficar aberto.
- Escolha os flags. Os flags mudam a forma como o padrão é aplicado (veja abaixo).
- Insira o texto de teste. Digite ou cole o texto a pesquisar na caixa de texto de teste.
- Leia os resultados. As correspondências são destacadas no texto, e a ferramenta informa quantas encontrou. Se houver texto de teste, ela também indica se o padrão corresponde ao texto inteiro, do início ao fim, ou apenas a uma parte dele.
- Salve um padrão. Um padrão pode ser armazenado com um rótulo curto para ser reutilizado depois. Os padrões salvos ficam no navegador, e não em um servidor, por isso só aparecem no mesmo dispositivo e no mesmo navegador.
- Copie os resultados. O texto correspondente ou o próprio padrão pode ser copiado para a área de transferência com um clique.
Flags de regex
Um flag é uma única letra acrescentada após um padrão que muda o comportamento dele. Esta ferramenta oferece quatro dos flags padrão do JavaScript:
| Flag | Nome | Efeito |
|---|---|---|
g | Global | Encontra todas as correspondências no texto, em vez de parar na primeira. |
i | Sem distinção entre maiúsculas e minúsculas | Ignora diferenças entre letras maiúsculas e minúsculas. |
m | Várias linhas | Faz ^ e $ corresponderem ao início e ao fim de cada linha, e não apenas ao início e ao fim do texto inteiro. |
s | Ponto abrange tudo | Faz . corresponder também a caracteres de quebra de linha. |
Os flags são escolhidos em uma lista suspensa. Ela mostra cada flag isolado e várias combinações predefinidas que incluem g, como gi para global e sem distinção entre maiúsculas e minúsculas, ou gms para global, várias linhas e ponto abrangendo tudo, juntos.
Como a ferramenta encontra correspondências
O mecanismo de busca sempre procura todas as ocorrências do padrão no texto, e é por isso que a contagem de correspondências se comporta como se o flag global estivesse ativo, mesmo quando ele não está selecionado na lista suspensa. Cada correspondência é registrada com sua posição e seu tamanho, e depois o texto original é dividido em trechos correspondentes e não correspondentes para que as correspondências possam ser destacadas.
Para verificar se um padrão corresponde ao texto inteiro, a ferramenta envolve o padrão em um grupo sem captura e o ancora: ^(?:pattern)$. O agrupamento importa porque | (alternância) tem precedência menor que as âncoras. Sem o grupo, um padrão como cat|dog ancorado como ^cat|dog$ significaria, na verdade, "começa com cat ou termina com dog", o que não é o mesmo que "o texto inteiro é cat ou dog". A verificação usa os flags selecionados, exceto g e m. Omitir m mantém ^ e $ presos ao início e ao fim do texto inteiro, de modo que um padrão que se ajusta a apenas uma linha de um texto com várias linhas não conta como correspondência do texto inteiro.
Exemplo prático
Padrão: \d+ (um ou mais dígitos), flag: g, texto de teste: Room 12 has 5 chairs.
- Correspondências encontradas:
12e5, portanto a contagem de correspondências é 2. - Verificação do texto inteiro: o padrão não corresponde ao texto inteiro, porque o texto também contém letras e espaços.
Se o texto de teste for alterado para 12345, o mesmo padrão corresponde à cadeia inteira, e a verificação do texto inteiro retorna verdadeiro.
Referência de sintaxe de regex
Correspondência de caracteres
| Símbolo | Significado | Exemplo | Corresponde a |
|---|---|---|---|
. | Qualquer caractere, exceto uma quebra de linha | a.c | "abc", "adc", "a1c" |
\d | Qualquer dígito, de 0 a 9 | \d{3} | "123", "456" |
\D | Qualquer caractere que não seja um dígito | \D+ | "abc", "xyz" |
\w | Qualquer letra, dígito ou sublinhado | \w+ | "abc123", "test_123" |
\W | Qualquer caractere que não seja letra, dígito ou sublinhado | \W+ | "!@#" |
\s | Qualquer caractere de espaço em branco | a\sb | "a b" |
\S | Qualquer caractere que não seja espaço em branco | \S+ | "abc" |
Âncoras de posição
| Símbolo | Significado | Exemplo | Corresponde a |
|---|---|---|---|
^ | Início de uma linha | ^abc | "abc" no início de uma linha |
$ | Fim de uma linha | abc$ | "abc" no fim de uma linha |
\b | Um limite de palavra | \bword\b | "word" como palavra inteira |
Quantificadores
| Símbolo | Significado | Exemplo | Corresponde a |
|---|---|---|---|
* | Zero ou mais do item anterior | a*b | "b", "ab", "aab" |
+ | Um ou mais do item anterior | a+b | "ab", "aab" |
? | Zero ou um do item anterior | colou?r | "color", "colour" |
{n} | Exatamente n do item anterior | a{3} | "aaa" |
{n,} | Pelo menos n do item anterior | a{2,} | "aa", "aaa" |
{n,m} | Entre n e m do item anterior | a{2,4} | "aa", "aaa", "aaaa" |
Conjuntos de caracteres e grupos
| Símbolo | Significado | Exemplo | Corresponde a |
|---|---|---|---|
[abc] | Qualquer um dos caracteres listados entre colchetes | [aeiou] | qualquer vogal isolada |
[^abc] | Qualquer caractere não listado entre colchetes | [^aeiou] | qualquer caractere que não seja vogal |
(abc) | Agrupa caracteres e captura a correspondência | (abc)+ | "abc", "abcabc" |
| a\ | b | Corresponde a a ou b | cat\ |
Vale conhecer mais dois recursos. Uma antecipação (lookahead), escrita como a(?=b), corresponde a "a" somente quando seguido por "b", sem incluir o "b" na correspondência. Uma retrospecção (lookbehind), escrita como (?<=a)b, corresponde a "b" somente quando vem logo depois de "a".
Exemplos de padrões comuns
Estes padrões podem ser colados na ferramenta para ver como se comportam com um texto de exemplo.
Somente dígitos: ^\d+$ corresponde a uma cadeia formada inteiramente por dígitos, como "48210", e rejeita qualquer coisa com letra ou espaço.
Endereço de e-mail (verificação básica): ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ corresponde a endereços no formato name@domain.tld, como "user@example.com". É uma verificação simples, e não o formato completo de e-mail definido pelos padrões da internet, de modo que alguns endereços incomuns, mas válidos, serão reprovados.
Número de telefone dos EUA: ^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$ corresponde a formatos como "(123) 456-7890", "123-456-7890" e "1234567890".
Data no formato AAAA-MM-DD: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ verifica se o mês está entre 01 e 12 e o dia entre 01 e 31. Ele não verifica se o dia é válido para o mês específico, por isso aceita "2024-02-30", embora fevereiro nunca tenha 30 dias.
Perguntas frequentes
O que é uma expressão regular? Uma expressão regular é uma sequência de caracteres que define um padrão de busca. Ela é usada para pesquisar, comparar e editar texto na maioria das linguagens de programação e dos editores de texto.
O que faz o flag global?
Sem o flag global, a busca normalmente para depois da primeira correspondência. Com o flag global (g), a busca continua e informa todas as correspondências no texto. Esta ferramenta sempre procura todas as correspondências ao contá-las, independentemente do flag escolhido.
Como correspondo a um ponto literal ou a outro caractere especial?
Coloque uma barra invertida antes dele. Por exemplo, \. corresponde a um ponto literal, e não a "qualquer caractere", que é o que significa . sem escape.
Qual é a diferença entre .* e .*??
.* é guloso e corresponde ao maior número possível de caracteres. .*? é preguiçoso e corresponde ao menor número possível de caracteres, deixando o restante do padrão ainda ter êxito.
Como verifico se uma cadeia inteira corresponde a um padrão, e não apenas uma parte dela?
Adicione ^ no início e $ no fim do padrão, por exemplo, ^[0-9]+$ para uma cadeia apenas de dígitos.
Este testador segue as regras de regex de outras linguagens de programação? Esta ferramenta usa o mecanismo de expressões regulares embutido no JavaScript. A maior parte da sintaxe básica, como classes de caracteres e quantificadores, é compartilhada entre linguagens como Python, Java e Perl, mas alguns detalhes diferem, então não há garantia de que um padrão que funciona aqui se comporte de forma idêntica em todos os lugares.
Referências
- MDN Web Docs. Regular expressions. Guia de expressões regulares — os flags g, i, m (
^e$correspondem a cada linha) e s (.corresponde a quebras de linha) do JavaScript. - MDN Web Docs. Assertions. Asserções de regex — uma antecipação corresponde a x apenas se x for seguido por y; uma retrospecção corresponde a x apenas se x for precedido por y.
- MDN Web Docs. Quantifiers. Quantificadores de regex — os quantificadores são gulosos por padrão; um ? no final os torna não gulosos.
- Resnick, P. (org.). RFC 5322: Internet Message Format. RFC Editor, 2008. RFC 5322 — a sintaxe padrão de endereços, cuja parte local admite caracteres como ! # ' e * que o padrão básico rejeita.