Regex: cinco construções que resolvem quase tudo
As expressões regulares têm fama de ilegíveis, e a culpa é de quem as usa para o que não devem. Com meia dúzia de construções resolve-se a esmagadora maioria dos casos do dia-a-dia.
1. Classes: que caracteres
/[aeiou]/ // um destes
/[^aeiou]/ // qualquer um menos estes
/[a-z0-9]/ // intervalos
/\d/ // dígito (o mesmo que [0-9])
/\w/ // letra, dígito ou _
/\s/ // espaço, tabulação, quebra de linha
/./ // qualquer coisa menos quebra de linha2. Quantificadores: quantas vezes
/a?/ // zero ou uma
/a*/ // zero ou mais
/a+/ // uma ou mais
/a{2,4}/ // entre duas e quatro3. Âncoras: onde
/^Olá/ // no princípio
/adeus$/ // no fim
/\bpor\b/ // palavra inteira: apanha "por" e não "porta"O \b é o que falta em metade das expressões que "apanham a mais".
4. Grupos: capturar pedaços
const data = '2026-03-13';
const [, ano, mes, dia] = data.match(/(\d{4})-(\d{2})-(\d{2})/);
// Com nomes, que se lê daqui a seis meses
const { ano: a, mes: m } = data.match(/(?<ano>\d{4})-(?<mes>\d{2})/).groups;5. Guloso ou preguiçoso
É a diferença que apanha toda a gente:
const html = '<b>um</b> e <b>dois</b>';
html.match(/<b>.*<\/b>/)[0]; // '<b>um</b> e <b>dois</b>' — apanhou tudo
html.match(/<b>.*?<\/b>/)[0]; // '<b>um</b>' — parou no primeiroO * estica o mais possível; o *? para assim que puder.
E as três regras de bom senso
Não valide emails com regex. A expressão correta pela norma tem centenas de caracteres e continua a aceitar endereços que não existem. Verifique que tem um
@com coisas dos dois lados, e depois envie um email — é a única validação que prova alguma coisa.Não analise HTML com regex. Etiquetas dentro de etiquetas, atributos com
>lá dentro, comentários. Use um analisador.Comente as compridas. A expressão que hoje se percebe é a que daqui a um ano ninguém se atreve a tocar.