Regex para encontrar correos electrónicos en un texto

Usa /[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g para encontrar todas las coincidencias en un texto. Cada ejemplo de abajo está probado con el patrón, y puedes abrirlo en el Probador de Regex con las muestras ya cargadas.

Actualizado el

/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g
Abrir en el Probador de Regex

Texto de muestra

Contact sales@example.com or support@devpack.app. Jane (jane.doe+news@mail.example.co.uk) replied; ignore @handles and user@localhost.

3 coincidencias

sales@example.com support@devpack.app jane.doe+news@mail.example.co.uk

Cómo funciona el patrón

ParteSignificado
[A-Za-z0-9._%+-]+La parte local
@El signo @
[A-Za-z0-9.-]+\.[A-Za-z]{2,}El dominio y el dominio de nivel superior
g flagEncuentra cada coincidencia, no solo la primera

Ejemplos de código

JavaScript

const matches = text.match(/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g) ?? [];

Python

import re

matches = re.findall(r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}', text)

PHP

preg_match_all('/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/', $text, $m);
$matches = $m[0];

Notas y limitaciones

Sin los anclajes ^ y $, el patrón encuentra direcciones en cualquier parte de un texto. Pega un documento completo en el Probador de Regex para listar todas las coincidencias.

Preguntas frecuentes

¿Cuál es la regex para encontrar todos los correos electrónicos en un texto?
/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g — encuentra cada coincidencia en un texto. Consulta la tabla de arriba para ver qué hace cada parte.
¿Funciona en Python y PHP?
Sí: los ejemplos de código de arriba usan el mismo patrón con re en Python y funciones preg en PHP.
¿Cómo pruebo esta regex?
Haz clic en «Abrir en el Probador de Regex»: el patrón, los flags y el texto de muestra se cargan automáticamente, y las coincidencias se resaltan mientras editas.