Testes e Depuração de Expressões Regulares: Do Básico a Padrões Eficientes
Texto
Por que Testar Regex Online?
Expressões regulares são poderosas, mas fáceis de errar na primeira tentativa. Um testador online ajuda você a:
- Destacar correspondências em tempo real: Veja o que corresponde enquanto digita
- Visualizar grupos de captura: Inspecione cada grupo com clareza
- Alternar flags rapidamente: Alterne
g/i/m/ssem reimplantar - Detectar erros de sintaxe instantaneamente: Padrões inválidos são sinalizados imediatamente
Tabela de Referência de Sintaxe Regex
Correspondência básica
| Sintaxe | Significado | Exemplo | Corresponde a |
|---|---|---|---|
. |
Qualquer caractere (exceto nova linha) | a.c |
abc, a1c |
\d |
Dígito | \d{3} |
123 |
\w |
Caractere de palavra | \w+ |
hello_1 |
\s |
Espaço em branco | a\sb |
a b |
[abc] |
Classe de caracteres | [aeiou] |
a, e, i |
[^abc] |
Classe negada | [^0-9] |
não dígitos |
Quantificadores
| Sintaxe | Significado | Greedy / Lazy |
|---|---|---|
* |
Zero ou mais | a* / a*? |
+ |
Um ou mais | a+ / a+? |
? |
Zero ou um | a? / a?? |
{n,m} |
Entre n e m | a{2,4} |
Grupos e referências
| Sintaxe | Significado | Exemplo |
|---|---|---|
(abc) |
Grupo de captura | (\d{4})-(\d{2}) |
(?:abc) |
Grupo sem captura | `(?:http |
\1 |
Retroreferência | (\w)\1 corresponde a aa, bb |
(?<name>) |
Grupo nomeado | (?<year>\d{4}) |
Usando o Testador de Regex Online
Passos
- Abra o Testador de Regex
- Insira seu padrão no campo de regex
- Cole o texto de exemplo no campo de teste
- Escolha as flags (
gglobal /isem distinção de maiúsculas /mmultilinha) - Revise os destaques e detalhes de correspondência
Flags comuns
| Flag | Significado | Padrão |
|---|---|---|
g |
Encontrar todas as correspondências | Apenas a primeira correspondência |
i |
Ignorar maiúsculas/minúsculas | Diferencia maiúsculas/minúsculas |
m |
Modo multilinha | Linha única |
s |
. corresponde a novas linhas |
. não corresponde a novas linhas |
u |
Modo Unicode | — |
Armadilhas Comuns
1. Correspondência greedy
Texto: <div>hello</div><div>world</div>
Padrão: <div>.*</div>
Resultado: a string inteira corresponde como um bloco único!
Solução: <div>.*?</div> ← correspondência lazy, duas correspondências separadas
2. Retrocesso catastrófico
// Perigoso: quantificadores aninhados causam retrocesso exponencial
/^(a+)+$/.test('a'.repeat(30) + 'b');
// Este teste pode levar segundos ou travar
// Solução: evitar quantificadores aninhados, ou usar grupos atômicos quando suportado
3. Esquecer de escapar caracteres especiais
Padrão: price.com ← . corresponde a qualquer caractere
Solução: price\.com ← corresponde apenas a price.com
Exemplos Práticos
| Caso de uso | Padrão |
|---|---|
| Telefone EUA (simplificado) | ^\+?1?\d{10,11}$ |
| Email (básico) | ^[\w.-]+@[\w-]+\.[\w.]+$ |
| URL | ^https?:\/\/[\w.-]+(?:\.[\w]+)+[/\w.-]*$ |
| Endereço IP | ^(\d{1,3}\.){3}\d{1,3}$ |
| Data YYYY-MM-DD | `^\d{4}-(?:0[1-9] |
| Caracteres CJK | [\u4e00-\u9fff]+ |
FAQ
O padrão funciona no testador mas não no código?
Verifique se esqueceu a flag g, ou se sua string contém novas linhas mas o padrão não tem m / s.
Como corresponder texto multilinha?
Use a flag s para que . corresponha a novas linhas, ou use [\s\S] em vez de ..
Resumo
Regex é essencial para desenvolvedores, mas a sintaxe é fácil de errar. Use o Testador de Regex para validar e depurar em tempo real. O ToolsKu também oferece Buscar e Substituir e Diff de Texto para um fluxo de trabalho de texto completo.
#正则表达式#Regex#文本处理#教程#调试