Regex pour adresse e-mail

Utilisez /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/ pour vérifier qu'une chaîne entière est une adresse e-mail valide. Chaque exemple ci-dessous est testé avec ce motif, et vous pouvez l'ouvrir dans le Testeur de regex avec les exemples préchargés.

Mis à jour le

/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/
Ouvrir dans le Testeur de regex
SaisieRésultat
user@example.com✓ Correspondance
first.last+news@mail.example.co.uk✓ Correspondance
x_y%z@sub.domain.io✓ Correspondance
plainaddress✗ Aucune correspondance
@example.com✗ Aucune correspondance
user@domain✗ Aucune correspondance
user name@example.com✗ Aucune correspondance
user@@example.com✗ Aucune correspondance

Fonctionnement du motif

PartieSignification
^Début de la chaîne
[A-Za-z0-9._%+-]+La partie locale : un ou plusieurs lettres, chiffres, points, tirets bas, signes pour cent, plus ou tirets
@Un @ littéral
[A-Za-z0-9.-]+Le nom de domaine, sous-domaines compris
\.Un point littéral avant le domaine de premier niveau
[A-Za-z]{2,}Le domaine de premier niveau : deux lettres ou plus (com, io, museum)
$Fin de la chaîne

Exemples de code

JavaScript

const re = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}', value))

PHP

preg_match('/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/', $value) === 1;

Notes et limites

C'est le motif pratique utilisé par la plupart des formulaires d'inscription. Il accepte certaines adresses techniquement étranges (deux points de suite) et rejette quelques adresses valides rares (parties locales entre guillemets, domaines en adresse IP). Le seul vrai test d'une adresse e-mail consiste à envoyer un lien de confirmation. Dans les formulaires HTML, <input type="email"> vous offre une validation par le navigateur sans effort.

Questions fréquentes

Quelle est la regex pour une adresse e-mail ?
/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/ — elle correspond à la chaîne entière. Consultez le tableau ci-dessus pour le rôle de chaque partie.
Quels exemples correspondent ?
Parmi les exemples testés, ceux-ci correspondent : user@example.com, first.last+news@mail.example.co.uk, x_y%z@sub.domain.io. Les autres ne correspondent pas.
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.