Testeur regex — Tester des expressions régulières en ligne
Ce testeur regex vous permet d’écrire, tester et déboguer des expressions régulières en temps réel. Saisissez un motif et une chaîne de test pour voir les correspondances surlignées instantanément, avec extraction détaillée des groupes de capture, prise en charge des groupes nommés et fonction de recherche-remplacement. Parcourez les modèles regex courants ou activez les indicateurs pour personnaliser la correspondance.
Testeur regex
Testez des motifs, inspectez les correspondances et essayez les remplacements au même endroit.
Questions fréquentes
Qu’est-ce qu’une expression régulière (regex) ?
Une expression régulière (regex ou regexp) est une suite de caractères qui définit un motif de recherche. Elle sert à faire correspondre des motifs dans des chaînes : trouver du texte qui suit une structure précise, valider des formats d’entrée et effectuer des opérations de recherche-remplacement. Les regex sont prises en charge dans presque tous les langages de programmation, dont JavaScript, Python, Java et Go, ainsi que dans de nombreux éditeurs de texte.
Quels sont les motifs regex les plus courants ?
Les motifs regex les plus utilisés incluent : la validation d’e-mail ([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}), la détection d’URL (https?://[\w.-]+), les numéros de téléphone (\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}), les adresses IP, les dates au format ISO (\d{4}-\d{2}-\d{2}), les codes couleur hexadécimaux (#[0-9a-fA-F]{3,6}) et les nombres entiers ou décimaux.
Que sont les groupes de capture en regex ?
Les groupes de capture sont des parties d’un motif regex entourées de parenthèses ( ). Quand la regex correspond, chaque groupe capture le texte qu’il a reconnu et peut être référencé ensuite. Par exemple, (\d{4})-(\d{2})-(\d{2}) appliqué à '2026-03-22' crée trois groupes de capture : $1='2026', $2='03', $3='22'. Les groupes nommés utilisent la syntaxe (?<name>...) pour un code plus lisible. Les groupes non capturants (?:...) regroupent sans capturer.
Que sont les assertions lookahead et lookbehind ?
Lookahead et lookbehind sont des assertions de largeur nulle qui vérifient des motifs sans les inclure dans la correspondance. Le lookahead positif (?=abc) correspond à une position suivie de 'abc'. Le lookahead négatif (?!abc) correspond à une position qui n’est pas suivie de 'abc'. Le lookbehind positif (?<=abc) correspond à une position précédée de 'abc'. Le lookbehind négatif (?<!abc) correspond à une position non précédée de 'abc'. Ils sont utiles pour les correspondances conditionnelles complexes.
Quelle est la différence entre correspondance gourmande et paresseuse ?
Les quantificateurs gourmands (*, +, ?) correspondent à autant de texte que possible, tandis que les quantificateurs paresseux (*?, +?, ??) correspondent au minimum possible. Par exemple, avec la chaîne '<b>bold</b>', le motif gourmand <.*> correspond à toute la chaîne '<b>bold</b>', alors que le motif paresseux <.*?> ne correspond qu’à '<b>'. Utilisez les quantificateurs paresseux lorsque vous voulez la correspondance la plus courte possible.
Qu’est-ce que le backtracking catastrophique en regex ?
Le backtracking catastrophique se produit lorsqu’un moteur regex prend un temps exponentiel pour déterminer qu’une chaîne ne correspond pas à un motif. Cela arrive avec des quantificateurs imbriqués comme (a+)+ ou des motifs comportant des alternatives qui se recouvrent. Le moteur essaie toutes les combinaisons possibles avant d’échouer, ce qui peut provoquer des lenteurs extrêmes ou un blocage. Évitez-le avec des classes de caractères précises, des groupes atomiques et des bornes de répétition limitées.
À quoi servent les indicateurs regex (modificateurs) ?
Les indicateurs regex modifient l’interprétation du motif. Les indicateurs courants sont : g (global), pour trouver toutes les correspondances au lieu de la première seulement ; i (insensible à la casse), pour ignorer les différences majuscules/minuscules ; m (multiligne), pour que ^ et $ correspondent aux limites de ligne plutôt qu’aux limites de chaîne ; s (dotall), pour que le caractère . corresponde aux retours à la ligne ; u (unicode), pour activer la correspondance Unicode complète. Les indicateurs peuvent être combinés, par exemple /pattern/gim.
Comment tester une regex en ligne ?
Saisissez votre motif regex dans le champ de motif et collez votre chaîne de test dans la zone de texte. Les correspondances sont surlignées en temps réel pendant la saisie. Activez les indicateurs (g, i, m, s, u) avec les boutons. Consultez les détails des correspondances, notamment les positions d’index et les groupes de capture, dans le panneau de résultat. Utilisez la section de remplacement pour tester des substitutions et parcourez les modèles courants pour partir de motifs prêts à l’emploi.
Comment fonctionne le remplacement regex avec les références arrière ?
Dans un remplacement regex, les références arrière permettent de réutiliser les groupes capturés dans la chaîne de remplacement. Utilisez $1, $2, etc. pour référencer les groupes numérotés, ou $<name> pour les groupes nommés. Par exemple, remplacer (\w+)\s(\w+) par $2 $1 inverse deux mots. Dans la chaîne de remplacement, $& désigne toute la correspondance, $` le texte avant la correspondance et $' le texte après.
Quelle est la différence entre regex et motifs glob ?
Les motifs glob sont des jokers plus simples utilisés principalement pour faire correspondre des chemins de fichiers dans les shells (par exemple *.txt, src/**/*.js). Ils prennent en charge * (n’importe quels caractères), ? (un seul caractère) et [...] (classe de caractères). Les regex sont beaucoup plus puissantes : elles prennent en charge quantificateurs, ancres, groupes, alternance, lookaround et références arrière. Les regex opèrent sur n’importe quel contenu textuel, tandis que les globs sont généralement limités aux chemins.
À propos des expressions régulières
Les expressions régulières (regex) sont des motifs puissants utilisés pour faire correspondre, rechercher et manipuler du texte. Elles forment un langage concis pour décrire des séquences de caractères : de simples correspondances littérales jusqu’à des motifs complexes avec répétition, alternance, groupes et assertions lookaround. Les regex sont prises en charge dans presque tous les langages de programmation et éditeurs de texte, ce qui en fait un outil essentiel pour les développeurs, analystes de données et administrateurs système.
Ce testeur regex vous permet d’écrire, tester et déboguer des expressions régulières en temps réel. Pendant que vous saisissez votre motif et votre chaîne de test, les correspondances sont surlignées instantanément, les groupes de capture sont extraits et le temps d’exécution est mesuré. Vous pouvez aussi effectuer des opérations de recherche-remplacement avec des références arrière.
Référence rapide de syntaxe regex
Classes de caractères
| Motif | Description |
|---|---|
[abc] | Correspond à l’un des caractères a, b ou c |
[^abc] | Correspond à n’importe quel caractère sauf a, b ou c |
[a-z] | Correspond à n’importe quel caractère dans l’intervalle a à z |
\d | Correspond à n’importe quel chiffre (équivalent à [0-9]) |
\D | Correspond à tout caractère non numérique |
\w | Correspond à tout caractère de mot (lettres, chiffres, underscore) |
\W | Correspond à tout caractère qui n’est pas un caractère de mot |
\s | Correspond à tout caractère d’espacement (espace, tabulation, retour à la ligne) |
\S | Correspond à tout caractère non blanc |
. | Correspond à n’importe quel caractère sauf le retour à la ligne (sauf si l’indicateur s est activé) |
Quantificateurs
| Motif | Description |
|---|---|
* | Correspond 0 fois ou plus (gourmand) |
+ | Correspond 1 fois ou plus (gourmand) |
? | Correspond 0 ou 1 fois (gourmand) |
{n} | Correspond exactement n fois |
{n,} | Correspond n fois ou plus |
{n,m} | Correspond entre n et m fois |
*? | Correspond 0 fois ou plus (paresseux / non gourmand) |
+? | Correspond 1 fois ou plus (paresseux / non gourmand) |
Ancres
| Motif | Description |
|---|---|
^ | Correspond au début de la chaîne (ou de la ligne avec l’indicateur m) |
$ | Correspond à la fin de la chaîne (ou de la ligne avec l’indicateur m) |
\b | Correspond à une limite de mot |
\B | Correspond à une absence de limite de mot |
Groupes et lookaround
| Motif | Description |
|---|---|
(abc) | Groupe de capture — correspond à "abc" et stocke le résultat |
(?:abc) | Groupe non capturant — regroupe sans stocker |
(?<name>abc) | Groupe de capture nommé |
\1 | Référence arrière vers le groupe de capture 1 |
a|b | Alternance — correspond à a ou b |
(?=abc) | Lookahead positif — correspond si la position est suivie de "abc" |
(?!abc) | Lookahead négatif — correspond si la position n’est pas suivie de "abc" |
(?<=abc) | Lookbehind positif — correspond si la position est précédée de "abc" |
(?<!abc) | Lookbehind négatif — correspond si la position n’est pas précédée de "abc" |
Motifs regex courants
Voici des motifs regex fréquemment utilisés dans des applications réelles :
- Validation d’e-mail —
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}reconnaît des adresses e-mail standards - Correspondance d’URL —
https?://[\w.-]+(?:\.[\w.-]+)+[\w.,@?^=%&:/~+#-]*reconnaît les URL HTTP et HTTPS - Adresse IP —
\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\bvalide les adresses IPv4 - Date (ISO) —
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])reconnaît les dates YYYY-MM-DD - Couleur hexadécimale —
#(?:[0-9a-fA-F]{3}){1,2}\breconnaît les codes couleur #RGB et #RRGGBB - Robustesse de mot de passe —
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}exige une majuscule, une minuscule, un chiffre et un caractère spécial (8 caractères ou plus)
Regex dans différents langages
Même si la syntaxe regex de base est largement similaire d’un langage à l’autre, il existe des différences notables dans les fonctionnalités, les règles d’échappement et l’usage des API :
| Fonctionnalité | JavaScript | Python | Java | Go |
|---|---|---|---|---|
| Moteur | V8/SpiderMonkey | module re | java.util.regex | RE2 |
| Lookaround | Oui | Oui | Oui | Non |
| Groupes nommés | (?<name>...) | (?P<name>...) | (?<name>...) | (?P<name>...) |
| Référence arrière | \1 ou $1 | \1 ou \g<1> | \1 ou $1 | Non prise en charge |
| Backtracking | Oui | Oui | Oui | Non (RE2 est linéaire) |
| Exemple | /\d+/g.test(s) | re.findall(r'\d+', s) | Pattern.compile("\\d+") | regexp.MustCompile(`\d+`) |
Conseils de performance regex
Des motifs regex mal conçus peuvent provoquer du backtracking catastrophique, où le moteur prend un temps exponentiel pour traiter certaines entrées. Suivez ces conseils pour écrire des motifs efficaces :
- Évitez les quantificateurs imbriqués — des motifs comme
(a+)+ou(a*)*provoquent un backtracking exponentiel sur les entrées qui ne correspondent pas. Simplifiez ena+ - Utilisez des groupes atomiques ou des quantificateurs possessifs — lorsqu’ils sont pris en charge,
(?>...)empêche le moteur de revenir en arrière dans un groupe - Soyez précis dans les classes de caractères — utilisez
[a-z]plutôt que.lorsque vous savez quels caractères attendre. Des classes plus étroites réduisent les tentatives inutiles - Ancrez vos motifs — ajoutez les ancres
^et$lorsque vous faites correspondre des chaînes complètes, pour éviter que le moteur essaie toutes les positions - Préférez les quantificateurs non gourmands quand c’est approprié —
.*?s’arrête à la première correspondance au lieu de consommer toute la chaîne puis de revenir en arrière - Limitez les bornes de répétition — utilisez
{1,100}plutôt que+pour plafonner le nombre d’itérations et éviter les recherches incontrôlées - Testez avec des entrées adversariales — testez toujours vos regex avec de longues chaînes presque correspondantes afin d’identifier les risques de backtracking avant la mise en production
Outils associés
- Convertisseur de casse — Convertissez du texte entre MAJUSCULES, minuscules, Titre, camelCase et plus encore
- Compteur de mots — Comptez les mots, caractères, phrases et paragraphes de votre texte
- Encodeur et décodeur d’URL — Encodez en pourcentage et décodez des URL pour les applications web