Hoja de referencia de expresiones regulares e patrones comuns
As expresiones regulares, o regex, são ferramentas poderosas de coincidencia de patrones utilizadas em praticamente todos os lenguajes de programação e editores de texto. Embora a sintaxe pode parecer críptica a primera vista, dominar o regex te permite buscar, validar, extrair e transformar texto com uma precisão que requeriria docenas de linhas de código procedural. Esta guia cobre a sintaxe esencial, patrones comuns e dicas práticos que necessitas conhecer.
Hoja de referencia de sintaxe básica de regex
Clases de caracteres
| Patrón | Significado | Exemplo |
|---|---|---|
| . | Qualquer carácter exceto nova linha | a.c coincide com abc, a1c, a c |
| \d | Qualquer dígito (0-9) | \d\d coincide com 42 |
| \D | Qualquer no dígito | \D coincide com a, !, espaço |
| \w | Carácter de palavra (a-z, A-Z, 0-9, _) | \w+ coincide com hello_123 |
| \W | No carácter de palavra | \W coincide com @, #, espaço |
| \s | Carácter de espaço em branco (espaço, tabulação, nova linha) | a\sb coincide com a b |
| \S | No espaço em branco | \S+ coincide com hello |
| [abc] | Qualquer carácter do conjunto | [aeiou] coincide com vocales |
| [^abc] | Qualquer carácter no no conjunto | [^0-9] coincide com no dígitos |
| [a-z] | Rango de caracteres | [A-Za-z] coincide com qualquer letra |
Cuantificadores
| Patrón | Significado | Exemplo |
|---|---|---|
| * | Cero o mais veces | ab*c coincide com ac, abc, abbc |
| + | Uma o mais veces | ab+c coincide com abc, abbc |
| ? | Cero o uma vez | colou?r coincide com cor, colour |
| {n} | Exatamente n veces | \d{4} coincide com 4 dígitos |
| {n,} | n o mais veces | \d{2,} coincide com 2 o mais dígitos |
| {n,m} | n a m veces | \d{3,5} coincide com 3-5 dígitos |
Anclas e límites
| Patrón | Significado | Exemplo |
|---|---|---|
| ^ | Inicio de cadena o linha | ^Hello coincide com Hello ao inicio |
| $ | Fin de cadena o linha | world$ coincide com world no final |
| \b | Límite de palavra | cat coincide com cat como palavra independiente |
| \B | No límite de palavra | \Bcat coincide com scattered |
Agrupação e alternancia
| Patrón | Significado | Exemplo |
|---|---|---|
| (abc) | Grupo de captura | (ab)+ coincide com abab |
| (?:abc) | Grupo no capturador | (?:ab)+ coincide com abab |
| a|b | Alternancia (OR) | cat|dog coincide com cat o dog |
| \1 | Referencia inversa ao grupo 1 | (\w) coincide com aa, bb |
| Grupo de captura nombrado | Referenciado por name |
Patrones comuns de expresiones regulares
Aquí estão os patrones regex mais comumente utilizados em desenvolvimento web e validação de datos:
Validação de correio electrónico
Um regex de correio electrónico prático que captura a maioria das direcciones inválidas sem ser demasiado estricto: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$. Este patrón valida a estrutura básica do correio electrónico enquanto permite caracteres comuns na parte local e requer um nombre de dominio válido com um TLD de pelo menos dois caracteres.
Validação de URL
Coincide com URLs HTTP e HTTPS: ^https?:\/\/(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$. Este patrón coincide com URLs com prefijo www opcional, nombre de dominio e ruta opcional.
Número de teléfono (EE. UU.)
Vários formatos de números de teléfono de EE. UU.: ^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$. Este patrón maneja formatos como (555) 123-4567, 555-123-4567 e 5551234567.
Direcção IP (IPv4)
Valida direcciones 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 asegura que cada octeto esté entre 0 e 255.
Fecha (YYYY-MM-DD)
Formato de fecha ISO: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$. Este patrón valida a estrutura do formato mas no verifica fechas válidas por mes.
Código de cor hexadecimal
Coincide com cores hexadecimais CSS: ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$. Este patrón coincide com os formatos abreviado de 3 dígitos (#fff) e completo de 6 dígitos (#ffffff).
Técnicas avanzadas
Lookahead e lookbehind
As aserciones de lookahead e lookbehind te permitem coincidir com um patrón solo quando está seguido (o precedido) por (o no por) outro patrón, sem incluir o texto circundante no resultado de a coincidencia.
- Lookahead positivo (?=pattern): Coincide solo se o patrón está na frente. Exemplo: \d(?=px) coincide com dígitos solo se vão seguidos de "px".
- Lookahead negativo (?!pattern): Coincide solo se o patrón no está na frente. Exemplo: \d(?!px) coincide com dígitos que no vão seguidos de "px".
- <=pattern): Coincide solo se o patrón está atrás. Exemplo: (?<=\$)\d+ coincide com dígitos precedidos por um signo de dólar.
Coincidencia codiciosa vs. perezosa
<.*>bold<.*?>".
Dicas de performance de regex
- Usa grupos no capturadores (?:) quando no necesites extrair o conteúdo do grupo coincidente
- Usa cuantificadores posesivos o grupos atómicos onde estén soportados para evitar retroceso excesivo
- Usa clases de caracteres específicas em vez de usar ampliamente o metacarácter ponto
- Ancla tuas patrones com ^ e $ quando necesites coincidir com cadenas completas
- Precompila patrones regex quando os reutilices em bucles
- Usa límites de palavra em vez de ^ e $ quando busques dentro de texto mais grande
Experimenta e depuração de regex
Siempre experimenta tuas patrones regex com entradas do mundo real antes de implementarlos. Usa um probador de regex interactivo que resalte as coincidencias em tiempo real e explique cada parte de tua patrón. Isto te ajuda a detectar casos límite e entender por que tua patrón coincide o no com entradas específicas. Experimenta nosso probador de regex gratuito para construir e testar tuas patrones de forma interactiva.
Usa nossas ferramentas gratuitas para construir, testar e depurar tuas patrones de expresiones regulares.
Experimenta o probador de regexHoja de referencia de regexPerguntas frequentes
Qual é a diferença entre coincidencia regex codiciosa e perezosa?
Os cuantificadores codiciosos coincidem com a mayor quantidade de texto possível, enquanto que os cuantificadores perezosos coincidem com a menor quantidade possível. Adicionar um signo de interrogação depois de um cuantificador lo faz perezoso. Por exemplo, .* coincide com a cadena mais larga possível, enquanto que .*? coincide com a mais corta.
É o regex igual em todos os lenguajes de programação?
No, as implementações de regex variam segundo o lenguaje. A maioria soporta a sintaxe POSIX básica, mas as características avanzadas como lookbehind, grupos nombrados e soporte Unicode difieren. JavaScript historicamente tenia soporte limitado de regex mas ha adicionado muitas características nos últimos anhos.
Pode o regex analizar HTML o XML?
No, o regex no pode analizar HTML o XML de maneira confiável porque são lenguajes libres de contexto anidados. O regex no tem concepto de profundidade de anidamiento o tags balanceadas. Usa um analizador HTML o XML adequado. O regex pode extrair patrones simples de HTML mas fallará em estruturas complejas.
Que são lookahead e lookbehind em regex?
<=pattern) é lookbehind positivo, coincide se o patrón está atrás. As versiones negativas usam ! em vez de =.
Como fazer que uma expresão regular no distinga entre mayúsculas e minúsculas?
Adiciona o flag i depois do delimitador de cierre para fazer que todo o patrón seja insensível a mayúsculas. Em JavaScript, usa /pattern/i. Em Python, usa re.IGNORECASE o re.I como flag. Também podes usar (?i) online para fazer que partes específicas sejam insensíveis a mayúsculas.
ToolHub's collection of 300+ free online tools including regex tester, cheat sheets, and more — no sign-up required.