Pular para o conteúdo

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

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ência
a|bCorresponde a a ou b
\bCorresponde a uma posição de limite de palavra
Calculadora de carregamento...
📚

Documentação

O que é um testador de regex

Um testador de regex é uma ferramenta que verifica uma expressão regular em relação a 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 uma letra maiúscula”. Este validador de regex permite digitar um padrão e um texto de teste e ver as correspondências destacadas imediatamente, sem escrever código.

As expressões regulares são usadas em muitas linguagens de programação para pesquisar textos, verificar se os dados inseridos por uma pessoa estão no formato correto e extrair partes específicas de um bloco maior de texto. A sintaxe é compacta, mas pode ser fácil de escrever incorretamente. Por isso, testar um padrão antes de usá-lo em um programa ajuda a identificar erros logo no início.

Como testar uma expressão regular online

  1. Digite um padrão. Insira a regex no campo de 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, quando um colchete ou parêntese fica aberto.
  2. Escolha as flags. As flags alteram a forma como o padrão é aplicado (veja abaixo).
  3. Insira o texto de teste. Digite ou cole o texto a ser pesquisado na caixa de texto de teste.
  4. Leia os resultados. As correspondências são destacadas no texto, e a ferramenta informa quantas foram encontradas. Se houver um texto de teste, ela também informa se o padrão corresponde ao texto inteiro, do início ao fim, ou apenas a uma parte dele.
  5. 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, não em um servidor, portanto aparecem somente no mesmo dispositivo e navegador.
  6. 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

Uma flag é uma única letra adicionada depois de um padrão para alterar seu comportamento. Esta ferramenta aceita quatro flags, usadas individualmente ou combinadas:

FlagNomeEfeito
gGlobalEncontra todas as correspondências no texto em vez de parar na primeira.
iSem distinção entre maiúsculas e minúsculasIgnora as diferenças entre letras maiúsculas e minúsculas.
mMultilinhaFaz ^ e $ corresponderem ao início e ao fim de cada linha, não apenas ao início e ao fim do texto inteiro. Altera onde as correspondências são encontradas, mas não a verificação do texto inteiro descrita abaixo.
sPonto inclui tudoFaz . também corresponder a caracteres de quebra de linha.

As flags podem ser combinadas, por exemplo, gi para busca global sem distinção entre maiúsculas e minúsculas, ou gms para usar global, multilinha e ponto incluindo tudo ao mesmo tempo.

Como a ferramenta encontra correspondências

O mecanismo de correspondência sempre pesquisa todas as ocorrências do padrão no texto. Por isso, a contagem de correspondências se comporta como se a flag global estivesse ativada, mesmo quando ela não é selecionada no menu suspenso. Cada correspondência é registrada com sua posição e seu comprimento. Em seguida, o texto original é dividido em partes 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 adiciona âncoras: ^(?:pattern)$. O agrupamento é importante 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 prática, “começa com cat ou termina com dog”, o que não é igual a “o texto inteiro é cat ou dog”.

Essa verificação também remove a flag multilinha. Com m definida, ^ e $ correspondem a cada quebra de linha. Assim, o teste ancorado responderia “alguma linha corresponde?” em vez de “o texto inteiro corresponde?”. A ferramenta remove m para essa verificação e mantém i e s, pois essas duas flags alteram o que o padrão encontra, não o local em que as âncoras são aplicadas. A resposta, portanto, sempre se refere ao texto completo, incluindo suas quebras de linha.

Exemplo prático

Padrão: \d+ (um ou mais dígitos), flag: g, texto de teste: Room 12 has 5 chairs.

  • Correspondências encontradas: 12 e 5; portanto, a contagem de correspondências é 2.
  • Verificação do texto inteiro: o padrão não corresponde ao texto completo, pois o texto também contém letras e espaços.

Se o texto de teste for alterado para 12345, o mesmo padrão corresponderá à sequência inteira, e a verificação do texto completo informará verdadeiro.

Referência de sintaxe de regex

Correspondência de caracteres

SímboloSignificadoExemploCorresponde a
.Qualquer caractere, exceto uma quebra de linhaa.c"abc", "adc", "a1c"
\dQualquer dígito de 0 a 9\d{3}"123", "456"
\DQualquer caractere que não seja um dígito\D+"abc", "xyz"
\wQualquer letra, dígito ou sublinhado\w+"abc123", "test_123"
\WQualquer caractere que não seja uma letra, um dígito ou um sublinhado\W+caracteres como @ e #
\sQualquer caractere de espaço em brancoa\sb"a b"
\SQualquer caractere que não seja espaço em branco\S+"abc"

Âncoras de posição

SímboloSignificadoExemploCorresponde a
^Início de uma linha^abc"abc" no início de uma linha
$Fim de uma linhaabc$"abc" no fim de uma linha
\bLimite de uma palavra\bword\b"word" como uma palavra completa

Quantificadores

SímboloSignificadoExemploCorresponde a
*Zero ou mais ocorrências do item anteriora*b"b", "ab", "aab"
+Uma ou mais ocorrências do item anteriora+b"ab", "aab"
?Zero ou uma ocorrência do item anteriorcolou?r"color", "colour"
{n}Exatamente n ocorrências do item anteriora{3}"aaa"
{n,}No mínimo n ocorrências do item anteriora{2,}"aa", "aaa"
{n,m}Entre n e m ocorrências do item anteriora{2,4}"aa", "aaa", "aaaa"

Conjuntos de caracteres e grupos

SímboloSignificadoExemploCorresponde a
[abc]Qualquer caractere listado entre os colchetes[aeiou]qualquer vogal isolada
[^abc]Qualquer caractere que não esteja listado entre os colchetes[^aeiou]qualquer caractere que não seja vogal
(abc)Agrupa caracteres e captura a correspondência(abc)+"abc", "abcabc"
a|bCorresponde a a ou bcat|dog"cat", "dog"

Há mais dois recursos que vale conhecer. Um lookahead, escrito como a(?=b), encontra "a" somente quando ele é seguido por "b", sem incluir "b" na correspondência. Um lookbehind, escrito como (?<=a)b, encontra "b" somente quando ele vem logo depois de "a".

Exemplos comuns de padrões

Estes padrões podem ser colados na ferramenta para observar seu comportamento em relação a textos de exemplo.

Somente dígitos: ^\d+$ corresponde a uma sequência formada inteiramente por dígitos, como "48210", e rejeita qualquer conteúdo com letras ou espaços.

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, não o formato completo de e-mail definido pelos padrões da internet. Por isso, alguns endereços incomuns, mas válidos, não passarão nessa verificação.

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 YYYY-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 se o dia está entre 01 e 31. Não verifica se o dia é válido para o mês específico. Portanto, 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 pesquisa. Ela é usada para pesquisar, encontrar e editar textos na maioria das linguagens de programação e dos editores de texto.

O que a flag global faz?
Sem a flag global, uma pesquisa normalmente para depois da primeira correspondência. Com a flag global (g), a pesquisa continua e informa todas as correspondências no texto. Esta ferramenta sempre pesquisa todas as correspondências ao contá-las, independentemente da flag escolhida.

Como encontro um ponto literal ou outro caractere especial?
Coloque uma barra invertida antes dele. Por exemplo, \. corresponde a um ponto literal, em vez de “qualquer caractere”, que é o significado de um . sem escape.

Qual é a diferença entre .* e .*??
.* é guloso e corresponde ao maior número possível de caracteres. .*? é não guloso e corresponde ao menor número possível de caracteres, desde que o restante do padrão ainda possa ser satisfeito.

Por que a ferramenta informa que o texto não corresponde completamente quando todas as linhas correspondem?
A verificação do texto inteiro trata o conteúdo como uma única sequência, incluindo as quebras de linha. Um padrão como \d+ corresponde separadamente a cada linha de 12 e 34, mas as duas linhas e a quebra de linha entre elas não são formadas apenas por dígitos. Por isso, a resposta para o texto completo é não. Para encontrar um texto que se estenda por várias linhas, o padrão também precisa abranger as quebras de linha, por exemplo, com [\s\S]+.

Como verifico se uma sequência inteira corresponde a um padrão, e não apenas parte dela?
Adicione ^ no início e $ no fim do padrão, por exemplo, ^[0-9]+$ para uma sequência formada apenas por dígitos.

Este testador segue as regras de regex de outras linguagens de programação?
Esta ferramenta usa o mecanismo de expressões regulares integrado ao JavaScript. A maior parte da sintaxe básica, como classes de caracteres e quantificadores, é compartilhada por linguagens como Python, Java e Perl. No entanto, alguns detalhes são diferentes, portanto não há garantia de que um padrão que funciona aqui se comporte exatamente da mesma forma em todos os lugares.

Referências

  1. "Regular expression." Wikipedia, Wikimedia Foundation. https://en.wikipedia.org/wiki/Regular_expression
  2. MDN Web Docs. "Regular expressions." Mozilla. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
  3. Friedl, J. E. F. (2006). Mastering Regular Expressions. O'Reilly Media.