ToolHub
View All Posts

Motifs d'expressions régulières que tout développeur devrait maîtriser

Les expressions régulières (regex) sont l'un des outils les plus puissants de la boîte à outils d'un développeur. Elles vous permettent de rechercher, valider et transformer du texte avec des motifs concis, des opérations qui pourraient nécessiter des dizaines de lignes de code procédural. Bien que la syntaxe des expressions régulières puisse sembler obscure au premier abord, la maîtrise d'un ensemble de motifs de base couvre la grande majorité des cas d'utilisation pratiques. Ce guide présente les motifs d'expressions régulières que vous utiliserez encore et encore, avec une explication détaillée du fonctionnement de chaque motif.

Rappel des bases des expressions régulières

Avant de plonger dans les motifs spécifiques, voici un rappel rapide des métacaractères fondamentaux qui composent tous les motifs d'expressions régulières :

MétacaractèreSignificationExemple
.Tout caractère uniquea.c correspond à abc, a1c, a c
*Zéro ou plusieurs fois le caractère précédentab*c correspond à ac, abc, abbc
+Une ou plusieurs fois le caractère précédentab+c correspond à abc, abbc
?Zéro ou une fois le caractère précédentcolou?r correspond à color, colour
^Début de chaîne^Hello correspond à Hello en début de chaîne
$Fin de chaîneworld$ correspond à world en fin de chaîne
[]Classe de caractères[aeiou] correspond à toute voyelle
()Groupe capturant(ab)+ correspond à ab, abab
|Alternance (ou)cat|dog correspond à cat ou dog
\dChiffre [0-9]\d{3} correspond à 123
\wCaractère de mot [a-zA-Z0-9_]\w+ correspond à hello_123
\sCaractère d'espacementa\sb correspond à a b

1. Validation d'e-mail

Motif d'e-mail de base

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

Ce motif valide la structure de base d'une adresse e-mail : un ou plusieurs caractères autorisés avant le @, suivi d'un domaine contenant au moins un point, et un domaine de premier niveau de deux lettres ou plus. Il capture la plupart des formats invalides tout en laissant passer les adresses légitimes.

Correspond à : user@example.com, john.doe+tag@company.co.uk

Ne correspond pas à : user@, @example.com, user@.com

Important : aucune expression régulière ne peut valider parfaitement toutes les adresses e-mail valides selon la RFC 5322. Utilisez ce motif pour une vérification basique du format, puis validez l'adresse en envoyant un e-mail de confirmation. Pour les applications en production, combinez la validation regex avec la validation du domaine.

2. Validation d'URL

Motif d'URL HTTP/HTTPS

^https?:\/\/(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$

Ce motif correspond aux URL HTTP et HTTPS avec un préfixe www facultatif, incluant le domaine et un chemin optionnel. Le s? rend le « s » de https facultatif, (www\.)? rend le préfixe www facultatif. Le segment de chemin (\/[^\s]*)? permet tout caractère sauf les espaces après le domaine.

Correspond à : https://example.com, http://www.example.com/path/to/page

Ne correspond pas à : ftp://example.com, example.com (sans protocole)

3. Validation de numéro de téléphone

Numéro de téléphone international

^\+?[1-9]\d{1,14}$

Ce motif suit le format E.164 pour les numéros de téléphone internationaux. Il autorise un préfixe + facultatif, exige que le premier chiffre soit 1-9 (pas de zéro en tête), et autorise jusqu'à 15 chiffres au total. C'est le format le plus fiable pour stocker et valider des numéros de téléphone internationalement.

Correspond à : +14155552671, 442071838750

Ne correspond pas à : +01xxxxxxxxx, 123

4. Force du mot de passe

Motif de mot de passe fort

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

Ce motif impose une politique de mot de passe forte : au moins 8 caractères, incluant au moins une lettre minuscule, une lettre majuscule, un chiffre et un caractère spécial. La syntaxe (?=.*[...]) utilise des lookaheads positifs pour vérifier la présence de chaque type de caractère sans consommer de caractères.

Correspond à : MyP@ss1word, Str0ng!Pass

Ne correspond pas à : password, Password1, P@ss

5. Validation d'adresse IP

Adresse IPv4

^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$

Ce motif valide les adresses IPv4 avec des vérifications de plage correctes. Chaque octet doit être entre 0 et 255. Le motif utilise une alternance de correspondances : 250-255 (25[0-5]), 200-249 (2[0-4]\d) ou 0-199 ([01]?\d\d?). Cela est répété trois fois après trois points, puis une dernière fois pour l'octet final.

Correspond à : 192.168.1.1, 10.0.0.1, 255.255.255.0

Ne correspond pas à : 256.1.1.1, 192.168.1, 192.168.1.1.1

6. Validation de format de date

YYYY-MM-DD (ISO 8601)

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

Ce motif valide les dates au format ISO 8601 (YYYY-MM-DD). Il vérifie une année à quatre chiffres, un mois entre 01-12 et un jour entre 01-31. Notez que ce motif valide le format mais pas la validité logique de la date (par exemple, il autorise 2026-02-31). Pour une validation complète, analysez la date et vérifiez par programme.

Correspond à : 2026-05-20, 2025-01-01, 2024-12-31

Ne correspond pas à : 2026-5-20, 2026-13-01, 26-05-20

7. Code couleur hexadécimal

Couleur hexadécimale CSS

^#(?:[0-9a-fA-F]{3}){1,2}$

Ce motif correspond aux codes couleur hexadécimaux CSS, y compris la forme abrégée à 3 chiffres (#fff) et la forme complète à 6 chiffres (#ffffff). Le quantificateur {1,2} autorise 1 ou 2 répétitions du groupe de 3 chiffres hexadécimaux, prenant en charge les deux formats.

Correspond à : #fff, #FF5733, #1e293b

Ne correspond pas à : fff, #ff, #1234567

8. Slug / Chaîne sécurisée pour URL

Motif de slug URL

^[a-z0-9]+(?:-[a-z0-9]+)*$

Ce motif valide les slugs URL : des chaînes alphanumériques en minuscules séparées par des tirets. Il garantit qu'il n'y a pas de tiret en début ou en fin, ni de tirets consécutifs. Ce format est SEO-friendly, sûr pour les URL, les noms de fichiers et les identifiants.

Correspond à : my-blog-post, regex-patterns-guide, tool123

Ne correspond pas à : My-Post, -slug, slug-, my--post

9. Numéro de carte de crédit

Motif de carte de crédit générique

^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13}|6(?:011|5\d{2})\d{12})$

Ce motif valide les numéros de carte de crédit principaux : Visa (commence par 4, 13 ou 16 chiffres), Mastercard (commence par 51-55, 16 chiffres), American Express (commence par 34 ou 37, 15 chiffres) et Discover (commence par 6011 ou 65, 16 chiffres). Utilisez ceci en combinaison avec l'algorithme de Luhn pour une validation complète.

10. Correspondance de balises HTML

Extraction de balises HTML

<([a-z][a-z0-9]*)\b[^>]*>(.*?)<\/\1>

Ce motif correspond aux balises HTML ouvrantes et fermantes avec contenu. Le premier groupe capturant ([a-z][a-z0-9]*) capture le nom de la balise, et la référence arrière \1 garantit que la balise fermante correspond à la balise ouvrante. (.*?) utilise une correspondance paresseuse pour capturer le contenu entre les balises, pour la correspondance la plus courte.

Conseils pour écrire de meilleures expressions régulières

Vous voulez tester ces motifs d'expressions régulières de manière interactive ? Essayez notre outil de test d'expressions régulières gratuit, avec mise en évidence des correspondances en temps réel, visualisation des groupes capturants et explication des motifs.

Tester les expressions régulières

Questions fréquentes

Qu'est-ce qu'un motif d'expression régulière ?

Un motif d'expression régulière est une séquence de caractères qui définit un motif de recherche. Il est utilisé pour la correspondance de chaînes, la validation, les opérations de recherche-remplacement et l'analyse de texte. Les motifs d'expressions régulières utilisent des métacaractères spéciaux comme ., *, +, ?, [], () et {} pour définir des règles de correspondance flexibles.

Dois-je utiliser des expressions régulières pour valider des adresses e-mail ?

Utilisez des expressions régulières pour la validation basique du format d'e-mail (vérification du symbole @, structure du domaine), mais n'essayez pas de valider complètement une adresse e-mail uniquement avec des expressions régulières. La spécification des e-mails (RFC 5322) est extrêmement complexe et aucune expression régulière ne peut valider parfaitement toutes les adresses valides. En production, combinez une validation regex basique avec une vérification d'e-mail réelle (envoi d'un lien de confirmation).

Quelle est la différence entre les quantificateurs gourmands et paresseux ?

Les quantificateurs gourmands (*, +) correspondent à autant de texte que possible, tandis que les quantificateurs paresseux (*?, +?) correspondent à aussi peu de texte que possible. Par exemple, appliqué à « aabb », le motif gourmand a.*b correspond à « aabb » (la chaîne entière), tandis que le motif paresseux a.*?b correspond uniquement à « aab » (la correspondance la plus courte).

Comment tester un motif d'expression régulière ?

Utilisez un outil de test d'expressions régulières en ligne (comme le testeur d'expressions régulières de ToolHub) pour tester vos motifs de manière interactive. Ces outils mettent en évidence les correspondances en temps réel, affichent les groupes capturants et expliquent la fonction de chaque partie du motif.

Les expressions régulières sont-elles identiques d'un langage de programmation à l'autre ?

La plupart de la syntaxe des expressions régulières est partagée entre les langages, mais les fonctionnalités avancées varient. JavaScript ne prend pas en charge les assertions lookbehind dans les anciens moteurs, Python utilise une syntaxe de groupes nommés différente de JavaScript, et PCRE (PHP) prend en charge plus de fonctionnalités que la plupart des autres moteurs. Testez toujours vos motifs dans le langage cible.