ToolHub
View All Posts

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ácterSignificadoExemplo
.Qualquer carácter simplea.c coincide com abc, a1c, a c
*Cero o mais do carácter anteriorab*c coincide com ac, abc, abbc
+Um o mais do carácter anteriorab+c coincide com abc, abbc
?Cero o um do carácter anteriorcolou?r coincide com cor, colour
^Inicio de cadena^Hello coincide com Hello ao inicio
$Fin de cadenaworld$ 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
\dDígito [0-9]\d{3} coincide com 123
\wCarácter de palavra [a-zA-Z0-9_]\w+ coincide com hello_123
\sCarácter de espaço em brancoa\sb coincide com a b

1. Validação de correio electrónico

Patrón básico de correio electrónico

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

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

Importante: Ningún regex pode validar perfectamente todas as direcciones de correio electrónico válidas segundo RFC 5322. Usa este patrón para verificação básica de formato, logo verifica as direcciones enviando um correio de confirmação. Para aplicaciones em producção, combina a validação regex com a validação de dominio.

2. Validação de URL

Patrón de URL HTTP/HTTPS

^https?:\/\/(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$

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

^\+?[1-9]\d{1,14}$

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

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

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

^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$

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)

^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$

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

^#(?:[0-9a-fA-F]{3}){1,2}$

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

^[a-z0-9]+(?:-[a-z0-9]+)*$

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

^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13}|6(?:011|5\d{2})\d{12})$

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

<([a-z][a-z0-9]*)\b[^>]*>(.*?)<\/\1>

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

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 regulares

Perguntas 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.