Regex pour trouver toutes les adresses e-mail d'un texte

Utilisez /[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g pour trouver chaque correspondance dans un texte. Chaque exemple ci-dessous a été testé avec ce motif, et vous pouvez l'ouvrir dans le Testeur de Regex avec les exemples déjà chargés.

Mis à jour le

/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g
Ouvrir dans le Testeur de Regex

Texte d'exemple

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

3 correspondances

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

Fonctionnement du motif

PartieSignification
[A-Za-z0-9._%+-]+La partie locale
@Le signe @
[A-Za-z0-9.-]+\.[A-Za-z]{2,}Le domaine et le domaine de premier niveau
g flagTrouver chaque correspondance, et pas seulement la première

Exemples de code

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];

Remarques et limites

Sans les ancres ^ et $, le motif trouve des adresses n'importe où dans un texte. Collez un document entier dans le Testeur de Regex pour afficher toutes les correspondances.

Questions fréquentes

Quelle est la regex pour trouver toutes les adresses e-mail d'un texte ?
/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g — elle trouve chaque correspondance dans un texte. Consultez le tableau ci-dessus pour le rôle de chaque partie.
Ça fonctionne-t-il en Python et en PHP ?
Oui : les exemples de code ci-dessus utilisent le même motif, avec re en Python et les fonctions preg en PHP.
Comment tester cette regex ?
Cliquez sur « Ouvrir dans le Testeur de Regex ». Le motif, les drapeaux et le texte d'exemple se chargent automatiquement, et les correspondances s'affichent en surbrillance pendant que vous modifiez.