Validateurs du monde réel

Reconnaissez les formats que vous croisez tous les jours — entiers, décimaux, couleurs hexadécimales, heures, dates, e-mails, slugs, adresses IP, codes ZIP et bien plus.

Lire les règles : Motifs courants dans le Guide →S'entraîner : Validateurs de formats →

Fait suite à Lookarounds

Ce que vous allez apprendre

Nombres Couleurs hexadécimales Heures et dates E-mails Slugs et adresses IP

Étapes · 14

  1. 01Valider le monde réelBriefing
  2. 02Nombres entiersChasse
  3. 03Nombres décimauxChasse
  4. 04Couleurs hexadécimalesChasse
  5. 05Heures au format 24 hChasse
  6. 06Dates ISOChasse
  7. 07E-mails simplesChasse
  8. 08Slugs d'URLChasse
  9. 09Adresses IPv4Chasse
  10. 10Codes ZIP américainsChasse
  11. 11HashtagsChasse
  12. 12Noms d'utilisateurChasse
  13. 13Golf : hexa courtChasse
  14. 14Validateurs terminésBriefing

Motifs de validation en regex

Une regex de validation répond à une seule question : ce texte a-t-il la bonne forme ? Formulaires d'inscription, tableurs et fichiers de configuration regorgent de valeurs qui doivent avoir un certain aspect : une heure, une date, un code couleur ou une adresse e-mail. Encadrez le motif de ^ et $ et il doit correspondre à toute la valeur : une espace égarée ou des caractères en trop font échouer la vérification.

Chaque format se construit à partir de petites pièces. \d est un chiffre, {4} en demande exactement quatre, ? rend une partie facultative, et un groupe comme (am|pm) liste les choix autorisés. Les plages de nombres demandent le plus de soin : (100|[1-9]?\d) couvre 0 à 100, alors que \d+ laisserait aussi passer 250. Dans chaque chasse de ce parcours, vous écrivez un validateur qui attrape les bonnes valeurs et épargne celles qui sont presque bonnes.

Soyez lucide sur ce qu'une regex peut savoir. Elle vérifie le format, pas le sens. Un motif de date accepte sans broncher 31/02/2026, sauf si vous écrivez des branches supplémentaires pour chaque mois, et un motif d'e-mail ne peut pas savoir si la boîte existe. Servez-vous de la regex comme d'un premier filtre rapide, puis laissez du vrai code vérifier le calendrier, envoyer un e-mail de confirmation ou chercher l'enregistrement.

Exemples

  1. /^(0?[1-9]|1[0-2]):[0-5]\d ?(am|pm)$/i

    Attrapés

    • 9:30 am
    • 12:05PM
    • 07:45 pm

    Épargnés

    • 13:00 pm
    • 9:60 am
    • 9:30

    Une heure au format 12 heures : de 1 à 12 avec un zéro initial facultatif, et le marqueur i accepte pm comme PM.

  2. /^(0[1-9]|[12]\d|3[01])/(0[1-9]|1[0-2])/\d{4}$/

    Attrapés

    • 05/11/2026
    • 31/12/1999
    • 31/02/2026

    Épargnés

    • 5/11/2026
    • 12/13/2026
    • 32/01/2026

    Le jour et le mois sont contrôlés par plage, et pourtant 31/02/2026 passe : le motif connaît les formes, pas le calendrier.

  3. /^[A-Z]{3}-\d{4}$/

    Attrapés

    • ABC-1234
    • XYZ-0042

    Épargnés

    • AB-1234
    • abc-1234
    • ABC-12345
    • ABC1234

    Un code produit : exactement trois majuscules, un tiret et quatre chiffres, et les ancres refusent tout ce qui est plus long.

  4. /^(100|[1-9]?\d)%$/

    Attrapés

    • 0%
    • 42%
    • 100%

    Épargnés

    • 101%
    • 07%
    • 42

    [1-9]?\d couvre 0 à 99 sans zéro initial, et 100 a sa propre branche.

Erreurs courantes

  • Oublier les ancres. Sans ^ et $, un motif de quatre chiffres laisse aussi passer 12345 et abc2026, car il trouve une correspondance quelque part à l'intérieur.
  • Laisser le point nu. Dans un nombre décimal ou un domaine, . correspond à n'importe quel caractère, si bien que 3x14 passe une vérification de nombre ; écrivez \. quand vous voulez un vrai point.
  • Vouloir couvrir tous les cas limites en un seul motif. Une regex d'e-mail entièrement conforme à la norme fait des centaines de caractères ; un motif court plus un e-mail de confirmation se lit mieux et repère davantage de vraies erreurs.

Lire les règles : Motifs courants dans le Guide →S'entraîner : Validateurs de formats →

À lire aussi : Regex d'e-mail : des motifs prêts à copier qui marchent vraiment →

À lire aussi : Regex pour les adresses IPv4 : bien couvrir les nombres de 0 à 255 →