Aller au contenu

Testeur d’expressions régulières

Regex Tester

Teste une expression régulière sur un texte d’exemple, avec surlignage des correspondances en direct et liste des groupes de capture.

Exécute une expression régulière sur un texte d'exemple et montre chaque correspondance avec ses positions, ses groupes de capture et le remplacement qu'elle produirait. C'est le moteur du navigateur lui-même : ce qui se passe ici est ce qui se passera dans votre JavaScript.

🔒 Fonctionne entièrement dans votre navigateurregextestpattern
Vue

Motif

//g

peut correspondre n’importe où dans la chaîne, 2 groupes de capture.

Tester sur

Toutes les correspondances sont listées. Sans le drapeau `g`, `String.replace` n’utilise que la première.

0 correspondance

Durée

0,0 ms

ask@example.com, 문의@example.co.kr and no-reply+tag@mail.example.org

Remplacer

`$1`, `$<name>`, `$&`, `` $` ``, `$'` et `$$` se développent tous, exactement comme `String.replace` les développe.

Comment s’en servir

  1. Écrivez le motif et réglez les drapeaux

    Les boutons de drapeaux sont les six qui comptent : global, ignore case, multiline, dotAll, unicode et sticky. Le littéral en haut est ce que vous colleriez dans du code.

  2. Collez du texte que vous avez vraiment

    Les correspondances sont surlignées sur place, en couleurs alternées pour que deux voisines se distinguent, et listées dans une table avec la valeur de chaque groupe — y compris les groupes qui n'ont pas participé.

  3. Essayez le remplacement

    `$1`, `$<name>`, `$&`, `` $` ``, `$'` et `$$` se développent exactement comme `String.replace` les développe : l'aperçu est donc la vraie sortie.

Questions fréquentes

Pourquoi la page avertit-elle qu'il manque le drapeau `g` ?

Parce que la liste montre toutes les correspondances, alors que sans `g` votre code n'en verra pas autant. `String.replace` ne change que la première, et `matchAll` lève carrément une erreur. C'est la différence entre ce que vous voyez ici et ce que fait votre programme.

Est-ce le même moteur que celui de Python ou de PCRE ?

Non — c'est celui de JavaScript. Le lookbehind, les groupes nommés et `\p{…}` sont pris en charge ici, mais pas les groupes atomiques, les quantificateurs possessifs, la récursion ni les groupes à drapeaux en ligne, et le comportement des classes de caractères diffère par endroits. Un motif qui fonctionne ici peut tout de même échouer ailleurs.

Mon motif fige la page.

Il ne devrait pas — la mise en correspondance tourne dans un worker précisément parce qu'un motif au retour arrière catastrophique ne peut être interrompu d'aucune autre façon. Si cela prend trop longtemps, l'exécution est arrêtée et signalée, ce qui est aussi un signal utile : un motif qui fait cela ici le fera sur votre serveur.

Pourquoi `.` ne correspond-il pas à mon retour à la ligne ?

Parce que c'est à cela que sert `s` (dotAll). Sans lui, `.` correspond à tout sauf à un terminateur de ligne — et `m` (multiline) est encore autre chose : il change ce que veulent dire `^` et `$`, pas ce à quoi `.` correspond.

À alimenter depuis

Ensuite

Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.