Patrones de regex que todo desenvolvedor deveria dominar
As expresiones regulares (regex) são uma das ferramentas mais poderosas no kit de ferramentas de um desenvolvedor. Te permitem buscar, validar e transformar texto com patrones concisos que requerirían docenas de linhas de código procedural. Embora a sintaxe do regex pode parecer críptica a primera vista, dominar um conjunto central de patrones cobre a gran maioria dois casos de uso do mundo real. Esta guia presenta os patrones regex que usarás repetidamente, com explicações detalhadas de como funciona cada um.
Repaso de fundamentos de regex
Antes de profundizar em patrones específicos, aquí há um repaso rápido dois metacaracteres fundamentais que formam a base de todos os patrones regex:
| Metacarácter | Significado | Exemplo |
|---|---|---|
| . | Qualquer carácter simple | a.c coincide com abc, a1c, a c |
| * | Cero o mais do carácter anterior | ab*c coincide com ac, abc, abbc |
| + | Um o mais do carácter anterior | ab+c coincide com abc, abbc |
| ? | Cero o um do carácter anterior | colou?r coincide com cor, colour |
| ^ | Inicio de cadena | ^Hello coincide com Hello ao inicio |
| $ | Fin de cadena | world$ coincide com world no final |
| [] | Clases de caracteres | [aeiou] coincide com qualquer vocal |
| () | Grupo de captura | (ab)+ coincide com ab, abab |
| | | Alternancia (OR) | cat|dog coincide com cat o dog |
| \d | Dígito [0-9] | \d{3} coincide com 123 |
| \w | Carácter de palavra [a-zA-Z0-9_] | \w+ coincide com hello_123 |
| \s | Carácter de espaço em branco | a\sb coincide com a b |
1. Validação de correio electrónico
Patrón básico de correio electrónico
Este patrón valida a estrutura básica de uma direcção de correio electrónico: um o mais caracteres permitidos antes do @, seguido de um nombre de dominio que contém pelo menos um ponto, e um dominio de nivel superior de dois o mais letras. Captura a maioria dois formatos inválidos enquanto permite direcciones legítimas.
Coincide: user@example.com, john.doe+tag@company.co.uk
No coincide: user@, @example.com, user@.com
2. Validação de URL
Patrón de URL HTTP/HTTPS
Este patrón coincide com URLs HTTP e HTTPS com prefijo www opcional, incluyendo o nombre de dominio e a ruta opcional. A s? faz que a "s" em https seja opcional, e (www\.)? faz que o prefijo www seja opcional. O segmento de ruta (\/[^\s]*)? permite qualquer carácter exceto espaço em branco depois do nombre de dominio.
Coincide: https://example.com, http://www.example.com/path/to/page
No coincide: ftp://example.com, example.com (sem protocolo)
3. Validação de número de teléfono
Número de teléfono internacional
Este patrón segue o formato de número de teléfono internacional E.164. Permite um prefijo + opcional, requer que o primer dígito seja 1-9 (sem ceros a a izquierda) e permite até 15 dígitos em total. Este é o formato mais confiável para armazenar e validar números de teléfono internacionalmente.
Coincide: +14155552671, 442071838750
No coincide: +01xxxxxxxxx, 123
4. Fortaleza de contrasenha
Patrón de contrasenha forte
Este patrón aplica uma política de contrasenha forte: pelo menos 8 caracteres, contendo pelo menos uma minúscula, uma mayúscula, um dígito e um carácter especial. A sintaxe (?=.*[...]) usa lookahead positivo para verificar a presencia de cada tipo de carácter sem consumir caracteres.
Coincide: MyP@ss1word, Str0ng!Pass
No coincide: password, Password1, P@ss
5. Validação de direcção IP
Direcção IPv4
Este patrón valida direcciones IPv4 com verificação adequada de rango. Cada octeto deve estar entre 0 e 255. O patrón usa alternancia para coincidir com: 250-255 (25[0-5]), 200-249 (2[0-4]\d) o 0-199 ([01]?\d\d?). Isto se repite três veces depois de pontos, logo uma vez mais para o octeto final.
Coincide: 192.168.1.1, 10.0.0.1, 255.255.255.0
No coincide: 256.1.1.1, 192.168.1, 192.168.1.1.1
6. Validação de formato de fecha
YYYY-MM-DD (ISO 8601)
Este patrón valida fechas em formato ISO 8601 (YYYY-MM-DD). Comprueba anho de quatro dígitos, mes entre 01-12 e dia entre 01-31. Ten em cuenta que este patrón valida o formato mas no a validez lógica de a fecha (por exemplo, permite 2026-02-31). Para validação completa, analiza a fecha e verifica programáticamente.
Coincide: 2026-05-20, 2025-01-01, 2024-12-31
No coincide: 2026-5-20, 2026-13-01, 26-05-20
7. Código de cor hexadecimal
Cor hexadecimal CSS
Este patrón coincide com códigos de cor hexadecimal CSS, incluyendo o formato abreviado de 3 dígitos (#fff) e o completo de 6 dígitos (#ffffff). O cuantificador {1,2} permite 1 o 2 repeticiones do grupo de dígitos hexadecimais de 3, soportando ambos formatos.
Coincide: #fff, #FF5733, #1e293b
No coincide: fff, #ff, #1234567
8. Slug / Cadena segura para URL
Patrón de slug de URL
Este patrón valida slugs de URL: cadenas alfanuméricas em minúsculas separadas por guiones. Asegura que no haja guiones ao inicio o no final, nem guiones consecutivos. Este formato é amigável para SEO e seguro para seu uso em URLs, nombres de arquivo e identificadores.
Coincide: my-blog-post, regex-patterns-guide, tool123
No coincide: My-Post, -slug, slug-, my--post
9. Número de cartão de crédito
Patrón de cartão de crédito comum
Este patrón valida os principais números de cartão de crédito: Visa (começa com 4, 13 o 16 dígitos), Mastercard (começa com 51-55, 16 dígitos), American Express (começa com 34 o 37, 15 dígitos) e Discover (começa com 6011 o 65, 16 dígitos). Combínalo com o algoritmo de Luhn para uma validação completa.
10. Coincidencia de tags HTML
Extração de tags HTML
Este patrón coincide com tags HTML de apertura e cierre com conteúdo. O primer grupo de captura ([a-z][a-z0-9]*) captura o nombre de a tag, e a referencia inversa asegura que a tag de cierre coincida com a de apertura. (.*?) usa coincidencia perezosa para capturar o conteúdo entre tags para a coincidencia mais corta.
Dicas para escrever melhores regex
- Começa simple: Escreve a versão mais básica do patrón primero, logo adiciona complexidade gradualmente. Experimenta em cada passo.
- Usa clases de caracteres: [a-z] é mais limpio que (a|b|c|...|z). As clases nombradas como \d, \w e \s mejoran a legibilidade.
- Prefere cuantificadores perezosos: Quando necesites a coincidencia mais corta, usa *? e +? em vez de * e + para evitar a sobrecoincidencia codiciosa.
- Usa anclas: Os patrones de validação siempre devem usar ^ e $ para asegurar que toda a cadena coincida, no solo uma subcadena.
- Evita o backtracking catastrófico: Os cuantificadores anidados como (a+)+ podem causar complexidade temporal exponencial para ciertas entradas. Usa grupos atómicos o cuantificadores posesivos quando estén disponiveis.
- Comenta patrones complejos: Usa o indicador x (modo verboso) para adicionar espaços em branco e comentarios a patrones complejos.
Queres testar estes patrones regex de forma interactiva? Experimenta nossa ferramenta gratuita de experimenta de regex, que soporta coincidencia em tiempo real, visualização de grupos de captura e explicação de patrones.
Testar expresiones regularesPerguntas frequentes
Que é um patrón regex?
Um patrón regex é uma secuencia de caracteres que define um patrón de búsqueda. Se utiliza para coincidencia de cadenas, validação, operações de búsqueda e reemplazo, e análisis de texto. Os patrones regex usam metacaracteres especiais como ., *, +, ?, [], () e {} para definir regras de coincidencia flexíveis.
Deveria usar regex para validar correios electrónicos?
Usa regex para a validação básica do formato de correio electrónico (verificando o símbolo @, estrutura do dominio), mas no intentes validar completamente as direcciones de correio electrónico solo com regex. A especificação de correio electrónico (RFC 5322) é extremadamente compleja, e ningún regex pode validar perfectamente todas as direcciones válidas. Em producção, combina a validação regex básica com a verificação real de correio electrónico (enviando um link de confirmação).
Qual é a diferença entre cuantificadores codiciosos e perezosos?
Os cuantificadores codiciosos (*, +) coincidem com a mayor quantidade de texto possível, enquanto que os cuantificadores perezosos (*?, +?) coincidem com a menor quantidade possível. Por exemplo, aplicado a "aabb", o patrón codicioso a.*b coincide com "aabb" (toda a cadena), enquanto que o patrón perezoso a.*?b solo coincide com "aab" (a coincidencia mais corta).
Como testar patrones de expresiones regulares?
Usa ferramentas de experimenta de regex online como o probador de regex de ToolHub para testar patrones de forma interactiva. Estas ferramentas resaltan coincidencias em tiempo real, muestran grupos de captura e explicam que faz cada parte do patrón.
É o regex igual em diferentes lenguajes de programação?
A maioria de a sintaxe regex se compartilha entre lenguajes, mas as características avanzadas difieren. JavaScript no soportaba aserciones lookbehind em motores mais antiguos, Python usa uma sintaxe de grupos nombrados diferente a JavaScript, e PCRE (PHP) soporta mais características que a maioria dois outros motores. Siempre experimenta tuas patrones em tua lenguaje objetivo.