Como testar uma expressão regular
- Digite o padrão no campo Expressão regular, sem as barras em volta. Um padrão de exemplo que encontra endereços de e-mail já vem carregado.
- Escolha as flags tocando em g, i, m, s, u ou y. As flags ativas aparecem depois da barra de fechamento.
- Cole o seu texto de teste em Texto de teste. Cada correspondência fica destacada em Correspondências no seu texto, com a contagem logo acima.
- Se quiser, adicione uma substituição, como
$1ou$<user>, para ver a prévia do texto depois de substituir. - Confira a tabela Detalhes das correspondências com a posição de cada correspondência e o valor de cada grupo de captura.
Recursos
- Destaque em tempo real das correspondências enquanto você digita.
- As seis flags do JavaScript: global, ignorar maiúsculas/minúsculas, multilinha, ponto pega quebras de linha, Unicode e sticky.
- Grupos de captura em uma tabela, com os grupos nomeados aparecendo com o próprio nome.
- Prévia de substituição com suporte a
$1,$<nome>e$&, e botão de copiar. - Contagem e posição das correspondências, com as primeiras 1.000 listadas.
- Proteção contra padrões descontrolados: a avaliação roda em um Web Worker e é interrompida depois de 1,5 segundo.
- Mensagens de erro claras do próprio motor quando o padrão é inválido, como um grupo não fechado.
Por que usar o testador de regex do Fileora
Dado de teste muitas vezes é dado de verdade: logs de servidor, exportações de clientes, listas de e-mail. O Fileora roda a expressão regular no seu navegador, então nada disso sai do seu aparelho. É grátis, não pede cadastro e os botões de flag são grandes o bastante para usar com conforto no celular.
Como o testador usa o mesmo motor do seu código JavaScript, não há surpresa na hora de copiar o padrão para o projeto.
Colinha de regex em JavaScript
.qualquer caractere, menos quebra de linha (qualquer um mesmo com a flag s)\d,\w,\sum dígito, um caractere de palavra (letra sem acento, dígito ou sublinhado), um espaço em branco\D,\W,\So contrário de cada um dos anteriores[abc],[^abc],[a-z]um caractere de um conjunto, fora de um conjunto ou em um intervalo^e$início e fim do texto, ou de cada linha com a flag m\buma fronteira de palavra*,+,?zero ou mais, um ou mais, zero ou um{3},{2,5}exatamente 3 vezes, ou entre 2 e 5 vezes*?,+?versões preguiçosas, que pegam o mínimo possível(abc)um grupo de captura;(?:abc)um grupo que não captura(?<ano>\d{4})um grupo nomeado, usado como$<ano>na substituiçãoa|ba ou b(?=x),(?!x)seguido de x, não seguido de x(?<=x),(?<!x)precedido de x, não precedido de x\p{L}qualquer letra de qualquer alfabeto, com a flag u
Acentos e padrões brasileiros
Um detalhe que pega muita gente: em JavaScript, \w só reconhece letras sem acento, então \w+ corta a palavra "ação" em pedaços. Para pegar palavras em português inteiras, use [\p{L}\p{N}_]+ com a flag u ligada: \p{L} aceita qualquer letra, com ou sem acento, inclusive o ç.
Alguns padrões comuns no Brasil para começar: um CEP é \d{5}-?\d{3}, e um CPF formatado é \d{3}\.\d{3}\.\d{3}-\d{2}. Lembre que isso só confere o formato, não se o CPF é válido de verdade.
Evitando padrões lentos
O backtracking catastrófico costuma vir de um grupo repetido que contém outra repetição, como (a+)+ ou (\w+\s?)*. Faça cada parte do padrão pegar algo distinto, ancore com ^ e $ sempre que der e prefira classes de caracteres específicas a .*.
Para conferir o efeito de uma substituição em um arquivo longo, compare o antes e o depois na ferramenta de comparar textos, e organize o JSON extraído no formatador de JSON.