ToolHub
View All Posts

Aide-mémoire des expressions régulières et motifs courants

Les expressions régulières, ou regex, sont des outils de recherche de motifs puissants utilisés dans presque tous les langages de programmation et éditeurs de texte. Bien que la syntaxe puisse sembler obscure au premier abord, la maîtrise des expressions régulières vous permet de rechercher, valider, extraire et transformer du texte de manière précise, des opérations qui pourraient nécessiter des dizaines de lignes de code procédural. Ce guide couvre la syntaxe de base, les motifs courants et les techniques pratiques que vous devez connaître.

Aide-mémoire de la syntaxe de base des expressions régulières

Classes de caractères

MotifSignificationExemple
.Tout caractère sauf le saut de lignea.c correspond à abc, a1c, a c
\dTout chiffre (0-9)\d\d correspond à 42
\DTout caractère non numérique\D correspond à a, !, espace
\wCaractère de mot (a-z, A-Z, 0-9, _)\w+ correspond à hello_123
\WCaractère non mot\W correspond à @, #, espace
\sCaractère d'espacement (espace, tabulation, saut de ligne)a\sb correspond à a b
\SCaractère non blanc\S+ correspond à hello
[abc]Tout caractère de l'ensemble[aeiou] correspond à une voyelle
[^abc]Tout caractère hors de l'ensemble[^0-9] correspond à un non-chiffre
[a-z]Plage de caractères[A-Za-z] correspond à toute lettre

Quantificateurs

MotifSignificationExemple
*Zéro ou plusieurs foisab*c correspond à ac, abc, abbc
+Une ou plusieurs foisab+c correspond à abc, abbc
?Zéro ou une foiscolou?r correspond à color, colour
{n}Exactement n fois\d{4} correspond à un nombre à 4 chiffres
{n,}n fois ou plus\d{2,} correspond à 2 chiffres ou plus
{n,m}Entre n et m fois\d{3,5} correspond à 3 à 5 chiffres

Ancres et limites

MotifSignificationExemple
^Début de chaîne ou de ligne^Hello correspond à Hello en début de chaîne
$Fin de chaîne ou de ligneworld$ correspond à world en fin de chaîne
\bLimite de mot\bcat\b correspond à cat isolé
\BNon-limite de mot\Bcat correspond à scattered

Groupes et alternance

MotifSignificationExemple
(abc)Groupe capturant(ab)+ correspond à abab
(?:abc)Groupe non capturant(?:ab)+ correspond à abab
a|bAlternance (ou)cat|dog correspond à cat ou dog
\1Référence arrière au groupe 1(\w)\1 correspond à aa, bb
abc)Groupe capturant nomméRéférencé par name

Motifs d'expressions régulières courants

Voici les motifs d'expressions régulières les plus couramment utilisés dans le développement Web et la validation de données :

Validation d'e-mail

Une expression régulière pratique pour les adresses e-mail qui capture la plupart des adresses invalides sans être trop stricte : ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ . Ce motif valide la structure de base d'un e-mail tout en autorisant les caractères courants dans la partie locale et en exigeant un domaine valide avec un TLD d'au moins deux caractères.

Validation d'URL

Correspond aux URL HTTP et HTTPS : ^https?:\/\/(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$ . Ce motif correspond aux URL avec un préfixe www facultatif, un domaine et un chemin optionnel.

Numéro de téléphone (États-Unis)

Divers formats de numéros de téléphone américains : ^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$ . Ce motif gère des formats comme (555) 123-4567, 555-123-4567 et 5551234567.

Adresse IP (IPv4)

Validation d'adresses IPv4 : ^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$ . Ce motif garantit que chaque octet est entre 0 et 255.

Date (YYYY-MM-DD)

Format de date ISO : ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ . Ce motif valide la structure du format mais ne vérifie pas la validité des dates de chaque mois.

Code couleur hexadécimal

Correspond aux codes couleur hexadécimaux CSS : ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ . Ce motif correspond aux formats abrégés à 3 chiffres (#fff) et complets à 6 chiffres (#ffffff).

Techniques avancées

Lookahead et lookbehind

Les assertions lookahead et lookbehind vous permettent de faire correspondre un motif uniquement si un autre motif suit (ou précède), sans inclure le texte environnant dans le résultat de la correspondance.

Correspondance gourmande vs paresseuse

<.*>bold<.*?> ».

Conseil pro : lors de l'extraction de contenu entre des délimiteurs comme des balises HTML ou des guillemets, utilisez toujours des quantificateurs paresseux pour éviter de correspondre à trop de texte. La correspondance gourmande est la source la plus courante de bugs dans les expressions régulières.

Conseils de performance pour les expressions régulières

Tester et déboguer des expressions régulières

Avant de déployer un motif d'expression régulière, testez-le toujours avec des entrées réelles. Utilisez un testeur d'expressions régulières interactif qui met en évidence les correspondances en temps réel et explique chaque partie du motif. Cela vous aide à détecter les cas limites et à comprendre pourquoi un motif correspond ou non à une entrée spécifique. Essayez notre testeur d'expressions régulières gratuit pour construire et tester vos motifs de manière interactive.

Utilisez nos outils gratuits pour construire, tester et déboguer vos motifs d'expressions régulières.

Essayez le testeur d'expressions régulièresAide-mémoire des expressions régulières

Questions fréquentes

Quelle est la différence entre les correspondances gourmandes et paresseuses ?

Les quantificateurs gourmands correspondent à autant de texte que possible, tandis que les quantificateurs paresseux correspondent à aussi peu de texte que possible. Ajouter un point d'interrogation après un quantificateur le rend paresseux. Par exemple, .* correspond à la chaîne la plus longue possible, tandis que .*? correspond à la plus courte.

Les expressions régulières sont-elles identiques dans tous les langages de programmation ?

Non, les implémentations d'expressions régulières varient selon les langages. La plupart prennent en charge la syntaxe POSIX de base, mais les fonctionnalités avancées comme le lookbehind, les groupes nommés et le support Unicode varient. JavaScript avait historiquement un support limité pour les expressions régulières, mais de nombreuses fonctionnalités ont été ajoutées ces dernières années.

Les expressions régulières peuvent-elles analyser du HTML ou XML ?

Non, les expressions régulières ne peuvent pas analyser de manière fiable du HTML ou XML car ce sont des langages contextuels imbriqués. Les expressions régulières n'ont pas de notion de profondeur d'imbrication ou de balises équilibrées. Utilisez un analyseur HTML ou XML approprié. Les expressions régulières peuvent extraire des motifs simples du HTML mais échoueront sur des structures complexes.

Que sont le lookahead et le lookbehind dans les expressions régulières ?

<=motif) est un lookbehind positif, il correspond si le motif précède. Les versions négatives utilisent ! au lieu de =.

Comment rendre une expression régulière insensible à la casse ?

Ajoutez l'indicateur i après le délimiteur de fermeture pour rendre l'ensemble du motif insensible à la casse. En JavaScript, utilisez /pattern/i. En Python, utilisez re.IGNORECASE ou re.I comme indicateur. Vous pouvez également utiliser (?i) en ligne pour rendre des parties spécifiques insensibles à la casse.

ToolHub's collection of 300+ free online tools including regex tester, cheat sheets, and more — no sign-up required.