Testeur d’expressions régulières
Testez des expressions régulières localement et inspectez les correspondances, groupes et positions.
Mode d’emploi
Saisissez une expression régulière JavaScript sans les barres obliques qui l’entourent, ajoutez des options et collez le texte dans lequel chercher. Le résultat liste chaque correspondance avec son numéro, la position où elle commence et le texte de chaque groupe de capture ; un groupe qui n’a pas participé à la correspondance s’affiche sous la forme —. Saisissez le motif comme vous l’écririez entre barres obliques dans du code : une seule barre oblique inverse, comme dans \d, et non deux.
Les options (flags) modifient la façon dont le motif est appliqué : g trouve toutes les correspondances au lieu de la première seulement, i ignore la casse, m fait correspondre ^ et $ au début et à la fin de chaque ligne, s permet au point de correspondre aux sauts de ligne, u active la prise en charge complète d’Unicode, v est une version améliorée de u qui ajoute des opérations ensemblistes dans les classes de caractères (utilisez u ou v, pas les deux), y (sticky) ne trouve une correspondance qu’au début du texte ou juste à l’endroit où la précédente s’est terminée, et d enregistre le début et la fin de chaque groupe (l’outil ne les affiche pas). Sans g (ni y), seule la première correspondance s’affiche.
Les positions sont comptées à partir de 0 et mesurées en unités de code UTF-16, comme JavaScript compte la longueur des chaînes : un emoji compte donc généralement pour deux. Les groupes nommés comme (?<year>\d{4}) sont listés par numéro, dans l’ordre d’apparition de leur parenthèse ouvrante.
La recherche s’exécute dans un worker séparé et s’arrête au bout d’une demi-seconde. Un motif aux répétitions imbriquées comme ^(a+)+$ peut prendre un temps exponentiellement plus long sur un texte qui correspond presque : c’est ce qu’on appelle le retour arrière catastrophique (catastrophic backtracking). Au lieu de figer la page, l’outil s’arrête et affiche « L’évaluation de l’expression a pris trop de temps. » Seules les 200 premières correspondances sont listées et comptées ; le motif peut faire jusqu’à 500 caractères et le texte jusqu’à 100 000 caractères.
Le moteur est celui de votre navigateur. Les motifs se transposent généralement à d’autres langages, mais pas toujours : Python écrit les groupes nommés sous la forme (?P<name>…), PCRE et Java disposent de quantificateurs possessifs et de groupes atomiques qui n’existent pas en JavaScript, et une option (?i) au début d’un motif n’est pas valide en JavaScript (les navigateurs récents n’acceptent que la forme limitée à un groupe (?i:…)). Testez le motif dans le langage cible avant de vous y fier.
Exemple
Trouve deux correspondances ressemblant à des adresses email. Le résultat affiche le texte, sa position initiale et les groupes capturés.
\b[a-z]+@([a-z0-9-]+\.)+[a-z]{2,}\b · options : giSur le texte d’exemple : [email protected] à la position 9 et [email protected] à la position 35. Le groupe 1 contient la dernière répétition de son groupe, respectivement example. et ntools., et non le domaine entier.^(?<key>[^=]+)=(?<value>.*)$ · options : gmSur les lignes name=Ana et city=Porto : deux correspondances, avec les groupes name et Ana, puis city et Porto. Sans m, aucune correspondance, car ^ et $ désignent alors l’ensemble du texte.(\d{4})-(\d{2})-(\d{2}) · option : gSur 2026-10-02 et 2027-03-01 : deux correspondances, chacune découpée en année, mois et jour.colou?r · options : giTrouve à la fois Color et colour : le ? rend le u facultatif, et i fait accepter le C majuscule.
Questions fréquentes
Les expressions sont-elles compatibles avec tous les langages ?
Non. Elles utilisent le moteur RegExp de JavaScript ; les fonctionnalités et l’échappement peuvent différer en Python, en PHP, en Java ou dans d’autres moteurs.
Pourquoi mon motif ne trouve-t-il qu’une seule correspondance ?
Ajoutez l’option g. Sans elle, une expression régulière s’arrête à la première correspondance.
Pourquoi ^ et $ ne correspondent-ils pas à chaque ligne ?
Par défaut, ils désignent le début et la fin du texte entier. L’option m les fait fonctionner ligne par ligne.
Que signifie « L’évaluation de l’expression a pris trop de temps » ?
La recherche a duré plus d’une demi-seconde, généralement à cause de répétitions imbriquées comme (a+)+ ou (.*)*. Rendez les parties répétées plus précises, par exemple [^,]* au lieu de .*, pour que le moteur ait moins de combinaisons à essayer.