Teste de expressões regulares
Teste de expressões regulares
Teste de expressões regulares suporta correspondência em tempo real, grupos de captura, grupos nomeados e visualização de substituição, útil para validar padrões, extrair texto e fazer substituições em massa.
/
/g
Busca global
Sem distinção maiúsc./minúsc.
Multilinha
Ponto inclui quebra de linha
Modo Unicode
Correspondência fixa
Texto de teste
Texto de substituição
Resultados de correspondência
Insira um padrão para começar a combinar
Visualização de substituição
Início rápido
Cenários comuns
Extraia IDs, e-mails, datas ou marcadores personalizados de logs, HTML-fonte ou texto bruto.
Teste primeiro se o padrão acerta o resultado esperado antes de usá-lo em código, validação de formulário ou regra de busca.
Use grupos de captura e grupos nomeados para substituir em lote estruturas de texto ou conteúdos de campos.
Dicas de uso
Limitações e compatibilidade
Privacidade e segurança
Perguntas frequentes
Uma expressão regular (regex) é uma linguagem padrão para descrever estruturas de texto. Pense nisso como uma "pesquisa avançada" - em vez de pesquisar por uma palavra fixa, você pesquisa tudo que corresponde a uma regra.\n\nPor exemplo, \\d{4}-\\d{2}-\\d{2} corresponde a todas as datas no formato AAAA-MM-DD e [\\w.]+@[\\w.]+ corresponde aos endereços de e-mail. Regex é amplamente usado para: pesquisa e extração de texto (encontrar códigos de erro em logs), validação de formato (verificar números de telefone) e substituição de lote (converter formatos de data).\n\nQuase todas as linguagens de programação (JavaScript, Python, Java, Go, etc.) e muitas ferramentas (VS Code, grep, sed) suportam regex com sintaxe principalmente semelhante. Esta ferramenta usa o mecanismo JavaScript RegExp para testes e aprendizado on-line rápidos.
A regex JavaScript retorna apenas a primeira correspondência por padrão — este é um comportamento de especificação de linguagem, não uma limitação da ferramenta. Clique no botão g na barra de sinalizadores para ativar a pesquisa global e ver todas as correspondências.\n\nObserve a interação entre g e y: g verifica todo o texto do início ao fim, enquanto y (fixo) exige que cada correspondência comece exatamente onde a anterior terminou - se houver caracteres de lacuna entre as correspondências, y para na primeira lacuna. Normalmente, apenas ativar g sem y é suficiente.
Existem quatro causas comuns:\n\n1. Colchetes sem correspondência: todo (deve ter uma correspondência), todo [deve ter uma correspondência]. Os IDEs podem completá-los automaticamente, mas esta ferramenta requer emparelhamento manual.\n2. Quantificadores mal colocados: quantificadores (*, +, ?, {n}) devem seguir um elemento quantificável. Combinações como *+ ou ?* são ilegais, a menos que o primeiro quantificador seja ? para modificação lenta (como *?).\n3. Escapes incompletos: um \\ solitário no final é ilegal — deve escapar de um caractere específico (como \\d, \\n, \\\\).\n4. As propriedades Unicode precisam do sinalizador u: \\p{L}, \\p{Script=Han} e escapes de propriedade Unicode semelhantes geram erros sem o sinalizador u ativado. Clique no botão u para habilitá-lo.
Esses são tokens de referência de substituição definidos por String.prototype.replace() do JavaScript:\n\n- $1, $2, ..., $99: faz referência ao conteúdo capturado pelo enésimo grupo de captura (...)\n- $&: todo o texto correspondente\n- $`: o texto antes do match\n- $': o texto após a correspondência\n- ${name}: o conteúdo capturado pelo grupo nomeado (?<name>...)\n\nPor exemplo, padrão (\\w+)\\s(\\w+) correspondendo a "olá mundo" com substituição $2-$1 produz "olá mundial". Para incluir um $ literal na substituição, use $$ para escapar dele.
Os tempos limite são quase sempre causados por "retrocesso catastrófico". Quando o mecanismo regex encontra quantificadores aninhados (como (a+)+b) ou caminhos opcionais sobrepostos, ele retrocede através de um número exponencial de combinações, fazendo com que o tempo de correspondência exploda.\n\nPadrões perigosos típicos: (a+)+, (.*?)*, (.+)+$ etc. Substituir . com classes de caracteres precisas, por ex. [^\\s]+ em vez de .+\n2. Evite quantificadores aninhados - altere (a+)+ para a+\n3. Reduza caminhos opcionais sobrepostos - altere (a|ab)+ para a+b?\n\nDepois de ajustar o padrão, clique no botão "Repetir" na área de resultados da partida. A ferramenta possui proteção de tempo limite de 4 segundos e não congela seu navegador.
Diferentes idiomas têm diferenças no mecanismo de regex em três áreas principais:\n\n1. O suporte à sintaxe varia: JavaScript não suporta padrões recursivos PCRE (?R), ramificações condicionais (?(cond)yes|no) ou grupos atômicos (?>...). O módulo re do Python também não possui estes, mas seu módulo regex os suporta. Java suporta grupos atômicos, mas não recursão.\n2. O manuseio de Unicode é diferente: o reprocessamento do Python 3 \\w, \\d como Unicode por padrão; JavaScript usa ASCII por padrão — você deve ativar o sinalizador u manualmente. Isso significa que \\w não corresponderá aos caracteres chineses e \\b os limites das palavras não se aplicam entre os caracteres CJK.\n3. A semântica da nova linha difere: do Python. não corresponde a \\n por padrão (igual ao JavaScript), enquanto o Pattern.DOTALL do Java se comporta da mesma forma que o sinalizador s do JavaScript.\n\nRecomendação: use esta ferramenta para verificação lógica rápida e, em seguida, faça a confirmação final com o mecanismo da sua linguagem de destino.