AdSense Placeholder
Slot: header_reference_page
Une expression régulière (regex) décrit un motif de texte. Elle sert à rechercher, valider ou remplacer du texte dans les éditeurs, les outils en ligne de commande et tous les langages de programmation. Essayez n'importe quel motif en direct dans le Testeur d'Expressions Régulières. Chaque exemple ci-dessous a été exécuté en JavaScript et en Python et donne le résultat indiqué.
Caractères et classes
| Motif |
Signification |
Exemple |
. |
un caractère quelconque sauf le saut de ligne |
a-c → a, -, c |
\d+ |
un ou plusieurs chiffres (\d est un chiffre, \D non) |
a12b345 → 12, 345 |
\w+ |
caractères de mot : lettres, chiffres et tiret bas (\W est l'inverse) |
hi_there! ok → hi_there, ok |
a\sb |
espace blanc : espace, tabulation, saut de ligne (\S est l'inverse) |
a b ab → a b |
gr[ae]y |
un caractère de l'ensemble |
gray grey groy → gray, grey |
[^0-9]+ |
tout ce qui n'est pas dans l'ensemble |
ab12cd3 → ab, cd |
[a-f0-9]+ |
plages dans un ensemble |
ff09 xyz 1a → ff09, 1a |
Ancres et limites
| Motif |
Signification |
Exemple |
^\d+$ |
^ est le début et $ la fin : tout le texte doit correspondre |
12345 → 12345 |
^\d+$ |
|
12a45 → aucune correspondance |
\bcat\b |
limite de mot : ne correspond à cat que comme mot entier |
cat concat cat. → cat, cat |
Quantificateurs
| Motif |
Signification |
Exemple |
ab* |
* signifie zéro ou plus de l'élément précédent |
a ab abbb → a, ab, abbb |
ab+ |
+ signifie un ou plus |
a ab abbb → ab, abbb |
colou?r |
? signifie facultatif (zéro ou un) |
color colour → color, colour |
\d{3} |
{n} signifie exactement n fois |
12 123 12345 → 123, 123 |
\d{2,3} |
{n,m} signifie entre n et m fois |
1 12 123 1234 → 12, 123, 123 |
<.+> |
gourmand (greedy) : prend le maximum |
<a><b> → <a><b> |
<.+?> |
paresseux (lazy) : ajoutez ? pour prendre le minimum |
<a><b> → <a>, <b> |
Groupes, alternance et assertions
| Motif |
Signification |
Exemple |
cat|dog |
| signifie l'un ou l'autre côté |
hotdog cat → dog, cat |
(?:ab)+ |
un groupe non capturant, auquel on peut appliquer un quantificateur |
ababab ab → ababab, ab |
(\w)\1 |
\1 répète ce qu'a capturé le groupe 1 |
hello book → ll, oo |
(?<year>\d{4})-\d{2} |
un groupe nommé, (?<nom>...) (JavaScript et PCRE ; Python écrit (?P<nom>...)) |
on 2026-10-03 → 2026-10 |
\d+(?=%) |
anticipation (lookahead) : suivi de %, sans le consommer |
50% 20 30% → 50, 30 |
foo(?!bar) |
anticipation négative : non suivi de bar |
foobar foobaz → foo |
(?<=\$)\d+ |
rétrospection (lookbehind) : précédé de $, sans le consommer |
cost $15 or 20 → 15 |
Drapeaux (flags)
| Drapeau |
Nom |
Effet |
i |
Ignorer la casse |
cat correspond aussi à Cat et CAT |
g |
Global |
Trouve toutes les correspondances, pas seulement la première |
m |
Multiligne |
^ et $ correspondent à chaque ligne, pas seulement au texte entier |
s |
Le point inclut les sauts de ligne |
. correspond aussi à un saut de ligne |
u |
Unicode |
Traite le motif comme de l'Unicode et active les classes \p{...} |
Caractères à échapper
Ils ont un sens spécial : placez une barre oblique inverse devant pour les faire correspondre littéralement : . ^ $ * + ? ( ) [ ] { } | \. Par exemple, 3\.14 correspond à 3.14 mais pas à 3x14.
Motifs pratiques
| Pour |
Motif |
Correspond à |
| Entier |
^-?\d+$ |
42, -7 |
| Nombre décimal |
^-?\d+(\.\d+)?$ |
3.14, -2, 10 |
| Couleur hexadécimale |
^#(?:[0-9a-fA-F]{3}){1,2}$ |
#fff, #a1B2c3 |
| E-mail (vérification approximative) |
^[^\s@]+@[^\s@]+\.[^\s@]+$ |
[email protected], [email protected] |
| Adresse IPv4 |
^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|1?\d?\d)$ |
192.168.1.1, 0.0.0.0, 255.255.255.255 |
| Forme de date ISO |
^\d{4}-\d{2}-\d{2}$ |
2026-10-03 |
| Mot répété |
\b(\w+)\s+\1\b |
the the, is is |
Ces motifs vérifient la forme du texte. Une vraie adresse e-mail, par exemple, ne peut pas être entièrement validée par une regex : envoyez plutôt un message de confirmation.
Pièges
- La correspondance gourmande prend le maximum ; ajoutez
? après un quantificateur pour la rendre paresseuse.
- Retour arrière catastrophique. Des quantificateurs imbriqués comme
(a+)+ peuvent prendre un temps exponentiel sur certaines entrées. Gardez des motifs simples quand ils s'exécutent sur du texte non fiable.
- Les dialectes diffèrent. JavaScript, Python, PCRE (PHP et beaucoup d'outils) et POSIX acceptent une syntaxe légèrement différente, surtout pour les groupes nommés, la rétrospection et l'Unicode.
- N'analysez pas du HTML avec une regex. Utilisez un vrai analyseur pour les structures imbriquées.