WikiPlus

Tester des expressions régulières en ligne gratuitement

Les expressions régulières sont parmi les outils les plus puissants de la programmation, mais aussi parmi les plus difficiles à déboguer. Une légère erreur de syntaxe et votre pattern ne correspond à rien — ou pire, il correspond à tout. Le Testeur de Regex de WikiPlus exécute votre expression sur un texte d'exemple en temps réel, surligne chaque correspondance, affiche les groupes de capture numérotés et nommés, et identifie les flags actifs. Tout s'exécute dans le moteur RegExp natif de votre navigateur, sans envoyer vos données à un serveur.

Comment fonctionne le testeur de regex en temps réel

Chaque frappe dans le champ de pattern ou dans la zone de texte de test déclenche un cycle de réévaluation synchrone. Le testeur tente d'abord de compiler la chaîne de pattern en un objet RegExp avec le jeu de flags actif. Si la compilation lève une SyntaxError — par exemple en raison d'une parenthèse non fermée ou d'un flag invalide — la bordure du champ devient rouge et un message d'erreur indique l'échec exact de parsing. Si la compilation réussit, le moteur exécute le pattern sur le texte de test complet. En mode global, le moteur itère sur toutes les correspondances non chevauchantes et enregistre l'index de début, l'index de fin et toutes les valeurs de groupe de capture pour chacune. En mode non global, seule la première correspondance est collectée. Le DOM reçoit ensuite des spans de surlignes colorés autour de chaque plage de caractères correspondante.

Comprendre les flags et leur effet

Le testeur expose les six flags standard de JavaScript sous forme de bascules individuelles. Le flag `g` (global) trouve toutes les correspondances plutôt que de s'arrêter à la première. Le flag `i` (insensible à la casse) rend le pattern indifférent aux majuscules et minuscules. Le flag `m` (multiligne) fait que `^` et `$` correspondent au début et à la fin de chaque ligne plutôt qu'au début et à la fin de la chaîne entière. Le flag `s` (dotAll) fait que le point `.` correspond aussi aux caractères de saut de ligne. Le flag `u` (Unicode) active le mode Unicode complet, où `\w` reconnaît les lettres Unicode et les groupes nommés `(?<nom>...)` sont disponibles. Le flag `y` (sticky) ancre la correspondance à `lastIndex` plutôt que de scanner toute la chaîne. Tester l'exacte combinaison de flags que votre code utilisera en production est crucial pour éviter les surprises.

Groupes de capture et groupes nommés

Les groupes de capture sont l'une des fonctionnalités les plus puissantes des expressions régulières. Un groupe de capture standard `(pattern)` extrait la portion correspondante pour un accès ultérieur via son numéro d'index. Un groupe de capture nommé `(?<nom>pattern)` permet d'accéder à la correspondance via un nom descriptif plutôt qu'un numéro, ce qui rend le code bien plus lisible. Le testeur WikiPlus affiche les deux types de groupes dans un panneau dédié pour chaque correspondance : le numéro ou nom du groupe, le texte capturé et sa position dans la chaîne de test. Pour les patterns complexes avec de nombreux groupes, cette vue tabulaire est indispensable pour vérifier que chaque groupe capture bien la bonne portion du texte.

Protéger contre le backtracking catastrophique

Certains patterns déclenchent un backtracking catastrophique qui peut bloquer un thread JavaScript pendant plusieurs secondes. L'exemple classique est `/(a+)+b/` testé contre une longue séquence de la lettre `a`. Pour protéger l'onglet du navigateur, le testeur WikiPlus applique un timeout de 1 000 millisecondes qui interrompt toute tentative de correspondance trop longue. Quand le timeout se déclenche, une bannière rouge identifie le pattern comme potentiellement dangereux et recommande d'ajouter un quantificateur possessif ou un équivalent de groupe atomique. Cette protection empêche l'onglet de devenir non réactif lors de l'exploration de patterns non testés sur de grandes entrées.

Questions fréquemment posées

Quel dialecte de regex ce testeur utilise-t-il ?
Le testeur utilise le même moteur d'expressions régulières ECMAScript que votre navigateur — le même que Node.js, Deno et tout runtime basé sur Chromium ou Firefox. Si votre code de production est JavaScript ou TypeScript s'exécutant dans un navigateur ou Node.js, ce qui passe ici est garanti de se comporter identiquement en production.
Pourquoi mon pattern se comporte-t-il différemment en Python ou PHP ?
Chaque langage embarque son propre moteur de regex avec des fonctionnalités, comportements par défaut et cas limites différents. Python supporte les lookbehind de longueur variable que JavaScript rejette. PHP utilise PCRE2 avec des groupes atomiques. Go's RE2 omet délibérément tout backtracking. Traitez le résultat ici comme un brouillon fonctionnel et exécutez des tests dans le runtime cible avant de déployer.
Mes patterns sont-ils sauvegardés entre les sessions ?
Oui. Le testeur persiste automatiquement le pattern, les flags et le texte de test dans le localStorage du navigateur à chaque modification. Quand vous rouvrez la page, la session précédente est restaurée intégralement. L'état sauvegardé n'est jamais synchronisé avec les serveurs WikiPlus.