Groupes de capture
Comment utiliser le testeur Regex
- Saisissez votre motif d'expression régulière dans le champ Motif.
- Activez les drapeaux si nécessaire :
gtrouve toutes les correspondances,iignore la casse,mfait correspondre^et$aux limites de ligne,sfait correspondre.aux sauts de ligne. - Collez votre chaîne de test, les correspondances sont surlignées en temps réel et les groupes de capture sont affichés en dessous.
Référence rapide de la syntaxe regex JavaScript
| Jeton | Signification |
|---|---|
. | N'importe quel caractère sauf retour à la ligne |
\d / \D | Chiffre / non-chiffre |
\w / \W | Caractère de mot [a-zA-Z0-9_] / non-mot |
\s / \S | Espace blanc / non-espace |
^ / $ | Début / fin de chaîne (ou ligne avec drapeau m) |
\b | Limite de mot |
+ / * / ? | Un ou plus / zéro ou plus / optionnel |
{n,m} | Entre n et m répétitions |
[abc] | Classe de caractères |
(abc) | Groupe capturant |
(?:abc) | Groupe non-capturant |
a|b | Alternance (a ou b) |
Motifs regex courants
- Adresse email :
[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,} - URL :
https?://[^\s/$.?#][^\s]* - Adresse IP :
\b(?:\d{1,3}\.){3}\d{1,3}\b - Date (AAAA-MM-JJ) :
\d{4}-\d{2}-\d{2} - Couleur hex :
#(?:[0-9a-fA-F]{3}){1,2}\b
Correspondance gourmande vs paresseuse
Par défaut, les quantificateurs (+, *) sont gourmands: ils correspondent au maximum possible. Ajoutez ? après le quantificateur pour le rendre paresseux (correspond au minimum) : +?, *?. Exemple : <.+?> correspond à des balises HTML individuelles plutôt qu'à tout ce qui se trouve entre le premier < et le dernier >.
Différences entre moteurs : JavaScript vs PCRE vs RE2
La syntaxe regex se ressemble d'un moteur à l'autre, mais le comportement diffère sur des points clés. Un motif qui fonctionne dans le navigateur peut échouer en PHP, Python ou Go :
| Fonctionnalité | JavaScript (cet outil) | PCRE (PHP, Python, Perl) | RE2 (Go, Rust) |
|---|---|---|---|
Lookbehind (?<=...) | Largeur fixe (ES2018+) | Largeur variable | Largeur fixe uniquement |
Rétroréférences | Oui | Oui | Non |
Groupes atomiques (?>...) | Non | Oui | Non |
Classes Unicode \p{L} | Oui (avec flag u) | Oui | Oui (par défaut) |
\d correspond aux chiffres Unicode | Non (ASCII seul sans u) | Oui (PCRE2 par défaut) | Non (ASCII seul) |
5 pièges fréquents
- Backtracking catastrophique : Un motif comme
(a+)+bsur une longue suite de 'a' sans 'b' provoque un backtracking exponentiel et peut bloquer votre application. Évitez les quantificateurs imbriqués sur des motifs qui se chevauchent. Testez toujours avec une entrée longue qui ne correspond pas. - \d et les chiffres Unicode : Sans le flag
u,\dne correspond qu'aux chiffres ASCII 0-9, pas aux chiffres arabes-indiens (٠-٩) ou autres formes Unicode. Ajoutezuet utilisez\p{N}pour tous les chiffres Unicode. - ^ et $ sans le flag m : Par défaut,
^et$correspondent au début et à la fin de la chaîne entière. Pour des ancres par ligne sur une entrée multiligne, ajoutez le flagm. - Quantificateur gourmand qui consomme trop :
<.+>sur<b>texte</b>correspond de la première<à la dernière>. Utilisez le paresseux<.+?>pour ne capturer qu'une balise à la fois. - Points non échappés dans les domaines : Le point correspond à n'importe quel caractère.
exemple.comcorrespond aussi àexempleXcom. Échappez les points littéraux :exemple\.com.