Testador de regex
Teste padrões em texto real, direto no navegador.
| # | Tipo | Valor | Posição |
|---|
Funciona no navegador. Nada do que você digita é enviado a lugar nenhum.
- Destaque de correspondências ao vivo
- Grupos nomeados e numerados
- Roda com segurança em um worker
Como testar uma expressão regular
- Digite ou cole seu padrão e escolha as flags que precisar.
- Cole o texto contra o qual quer testar.
- Confira as correspondências destacadas, a tabela de grupos, ou pré-visualize uma substituição.
Referência rápida de sintaxe regex
| Padrão | Combina com |
|---|---|
| \d | Qualquer dígito, de 0 a 9 |
| \w | Qualquer letra, dígito ou caractere _ |
| \s | Qualquer caractere de espaço em branco |
| + | Um ou mais do token anterior |
| * | Zero ou mais do token anterior |
| ? | Zero ou um, ou torna um quantificador preguiçoso |
| ^ e $ | Início e fim do texto ou da linha |
Recursos de regex do JavaScript
| Recurso | Sintaxe | Nota |
|---|---|---|
| Grupos nomeados | (?<nome>...) | Compatível desde o ES2018 |
| Lookbehind | (?<=...) e (?<!...) | Compatível desde o ES2018 |
| Modo Unicode | flag u | Necessário para escapes de propriedade Unicode como \p{Letter} |
| Sem diferenciar maiúsculas/minúsculas | flag i | Mesma ideia da maioria das outras linguagens |
Dicas para escrever padrões
- Use uma barra invertida para escapar caracteres especiais como . ( ) [ ] quando quiser o caractere literal.
- Use um grupo não capturante (?:...) para agrupar quando não precisar referenciar aquela correspondência depois.
- Quantificadores gulosos pegam o máximo possível. Adicione um ? depois de um, como +?, para uma correspondência preguiçosa que para no primeiro ponto possível.
- Teste com casos extremos, como uma string vazia ou espaço em branco extra, não só o texto que você espera combinar.
Perguntas frequentes sobre Testador de regex
Por que meu padrão parou de responder?
Alguns padrões podem retroceder de forma exponencial em certos textos. A correspondência roda em um worker em segundo plano com limite de 1,5 segundo, então um padrão descontrolado é interrompido em vez de travar a aba.
O que significam as flags?
g encontra todas as correspondências em vez de só a primeira, i ignora maiúsculas e minúsculas, m faz ^ e $ combinarem linha por linha, s deixa o ponto combinar com quebras de linha, u ativa o modo Unicode completo, y ancora a correspondência ao último índice, e d adiciona posições de início e fim para cada correspondência.
A caixa de substituição muda meu texto de teste?
Não. Ela mostra o que String.replace produziria em uma caixa de resultado separada, então o texto de teste que você digitou continua exatamente como estava.
Grupos de captura nomeados são compatíveis?
Sim. Escreva um grupo como (?<nome>...) e o nome dele aparece ao lado do número do grupo na tabela de correspondências.
Meu texto é enviado para algum lugar?
Não. A correspondência roda em um worker dentro da sua própria aba do navegador, e nada do que você digita sai da página.
Qual variante de regex isso usa?
O mecanismo RegExp nativo do JavaScript no seu navegador, o mesmo que roda seus padrões se você estiver construindo um app web ou um script Node.js.
O que é retrocesso catastrófico?
É quando um padrão com grupos repetidos aninhados, como (a+)+b, pode demorar exponencialmente mais para falhar conforme a entrada cresce mesmo um caractere. O limite de 1,5 segundo do worker aqui pega um padrão assim antes que ele trave a página.
^ e $ podem combinar com o início e fim de cada linha, não só do texto todo?
Sim, ative a flag m (multilinha). Sem ela, ^ e $ só combinam com o início e o fim exatos do texto de teste inteiro.