alltools.one
Development‱
2025-06-15
‱
7 min
‱
alltools.one Team
RegexEmailValidationJavaScriptDevelopment

Regex pour la validation d'e-mail : des patterns qui fonctionnent vraiment

La validation d'e-mail est l'un des cas d'utilisation les plus courants des regex — et l'un des plus mal compris. La spĂ©cification RFC 5321 pour les adresses e-mail est Ă©tonnamment complexe, et aucune regex unique ne peut la valider entiĂšrement. Mais des patterns pratiques qui couvrent 99,9 % des adresses e-mail rĂ©elles sont Ă  la fois rĂ©alisables et utiles.

Le pattern simple (suffisant)

Pour la plupart des applications, ce pattern fonctionne bien :

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

Ce qu'il correspond : Un ou plusieurs caractÚres autorisés, suivis de @, suivis d'un domaine avec au moins un point et un TLD de 2+ lettres.

JavaScript :

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
emailRegex.test('user@example.com');  // true
emailRegex.test('user@.com');          // false

Testez ce pattern avec notre Testeur de Regex.

Pourquoi une validation parfaite par regex est impossible

La spécification e-mail (RFC 5321/5322) autorise des structures qui sont valides mais essentiellement jamais utilisées en pratique :

"john..doe"@example.com           // Quoted local part with consecutive dots
user@[192.168.1.1]                // IP address as domain
"very.(),:;<>[]".VERY."very@\ "very".unusual"@strange.example.com

Une regex qui gÚre toutes les adresses valides selon la RFC fait des milliers de caractÚres et peut encore ne pas couvrir chaque cas limite. L'approche pratique : utiliser une regex simple pour la validation basique du format, puis vérifier que l'e-mail existe réellement en envoyant une confirmation.

Décomposition du pattern

Partie locale (avant @)

[a-zA-Z0-9._%+-]+
  • Lettres (majuscules et minuscules)
  • Chiffres
  • Points, underscores, pourcentage, plus, tiret
  • Un ou plusieurs caractĂšres

Erreurs courantes :

  • Autoriser les points au dĂ©but ou Ă  la fin (techniquement invalide)
  • Autoriser les points consĂ©cutifs (techniquement invalide sans guillemets)
  • Être trop restrictif (bloquer des caractĂšres valides comme + utilisĂ© dans les alias Gmail)

Partie domaine (aprĂšs @)

[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
  • CaractĂšres alphanumĂ©riques, points, tirets
  • Au moins un point
  • TLD de 2+ caractĂšres alphabĂ©tiques

Erreurs courantes :

  • Restreindre la longueur du TLD Ă  3-4 caractĂšres (.museum, .photography existent)
  • Ne pas autoriser les tirets dans les noms de domaine
  • Ne pas gĂ©rer les sous-domaines (user@mail.example.co.uk)

Meilleurs patterns

Standard HTML5

La spécification HTML5 définit ce pattern pour <input type="email"> :

^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$

Celui-ci est plus permissif dans la partie locale et plus strict sur la longueur des labels de domaine.

Pattern pratique recommandé

^[^\s@]+@[^\s@]+\.[^\s@]{2,}$

Ce pattern minimal vĂ©rifie simplement : pas d'espaces, un @, au moins un point aprĂšs @, TLD de 2+ caractĂšres. Il est intentionnellement permissif — capturant les entrĂ©es manifestement erronĂ©es sans rejeter les adresses inhabituelles mais valides.

Implémentation par langage

JavaScript

function isValidEmail(email) {
  // Basic regex check
  const regex = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/;
  if (!regex.test(email)) return false;
  
  // Additional checks
  if (email.length > 254) return false;  // RFC 5321 limit
  const [local] = email.split('@');
  if (local.length > 64) return false;   // RFC 5321 limit
  
  return true;
}

Python

import re

def is_valid_email(email: str) -> bool:
    pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
    if not re.match(pattern, email):
        return False
    if len(email) > 254:
        return False
    local, domain = email.rsplit('@', 1)
    if len(local) > 64:
        return False
    return True

Au-delĂ  de la Regex : une validation d'e-mail correcte

La regex n'est que la premiÚre ligne de défense. Une stratégie de validation complÚte :

  1. Vérification du format (regex) : Rejeter les formats manifestement invalides
  2. VĂ©rification de longueur : Partie locale ≀ 64 caractĂšres, total ≀ 254 caractĂšres
  3. Vérification DNS : Vérifier que le domaine possÚde des enregistrements MX
  4. Détection d'e-mails jetables : Bloquer les services d'e-mail temporaires si nécessaire
  5. E-mail de confirmation : Le seul moyen de vĂ©ritablement vĂ©rifier un e-mail — envoyer un message et confirmer que l'utilisateur le reçoit
// DNS MX record check (Node.js)
const dns = require('dns');
const [, domain] = email.split('@');
dns.resolveMx(domain, (err, addresses) => {
  if (err || !addresses.length) {
    console.log('Domain has no email server');
  }
});

Erreurs courantes à éviter

  1. Patterns trop restrictifs : Bloquer user+tag@gmail.com (adressage plus) ou user@subdomain.example.com
  2. SensibilitĂ© Ă  la casse : Les parties locales d'e-mail peuvent ĂȘtre sensibles Ă  la casse selon la RFC, mais en pratique, traitez-les comme insensibles Ă  la casse
  3. Suppression des espaces : Toujours supprimer les espaces avant la validation — " user@example.com " devrait passer
  4. Domaines internationaux : .mĂŒnchen et 甚户@äŸ‹ăˆ.jp sont valides dans les e-mails internationalisĂ©s

Pour plus de patterns regex, consultez notre Aide-mémoire Regex.

FAQ

Dois-je valider l'e-mail avec une regex cÎté client ou cÎté serveur ?

Les deux. La validation cĂŽtĂ© client offre un retour instantanĂ© (meilleure UX). La validation cĂŽtĂ© serveur est obligatoire pour la sĂ©curitĂ© (les vĂ©rifications cĂŽtĂ© client peuvent ĂȘtre contournĂ©es). Ne faites jamais confiance uniquement Ă  la validation cĂŽtĂ© client.

Pourquoi certains sites web rejettent-ils mon adresse e-mail valide ?

Les patterns regex trop restrictifs en sont la cause habituelle. Les adresses avec + (alias Gmail), les TLD longs (.technology) ou les sous-domaines sont souvent rejetés par une mauvaise validation. Si vous maintenez un site web, utilisez une regex permissive et vérifiez avec un e-mail de confirmation à la place.

Ressources associées

Published on 2025-06-15
Regex for Email Validation: Patterns That Actually Work | alltools.one