Tous les guides
Développeur

Remplacement par expression régulière : réorganisez le texte avec des groupes de capture

Échangez l'année, le mois et le jour sans les retaper—et voyez pourquoi une date correspondante peut encore être invalide.

Pour transformer 2026-10-15 en 15/10/2026, capturez l'année, le mois et le jour séparément, puis réordonnez ces captures. Vous n'avez pas besoin de saisir un nouveau remplacement pour chaque date.

Cet exemple modifie la forme du texte. Il ne vérifie pas si chaque date existe. Cette distinction compte lorsque vous utilisez le résultat dans un tableur ou que vous le publiez.

Commencez par un petit échantillon, incluant une date invalide

Ouvrez le Testeur de regex et collez ceci dans Tester le texte :

Launch: 2026-10-15
Review: 2026-11-02
Invalid: 2026-99-99
Short: 2026-1-5

Dans Expression régulière, saisissez ce motif sans délimiteurs slash :

\b(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})\b

Les trois groupes nommés capturent quatre chiffres, deux chiffres et deux chiffres. Les limites de mot empêchent la correspondance au sein d'une suite plus longue de caractères de mot, mais elles ne font pas de ce motif un validateur de calendrier.

Sous Options, gardez Trouver toutes les correspondances activé. C'est le drapeau g. Vous devriez voir trois correspondances ; le mois et le jour à un chiffre de la dernière ligne ne correspondent pas au motif.

Réordonnez les captures dans le remplacement

Choisissez Remplacer et saisissez ce qui suit dans Remplacer par. Sur un téléphone, ouvrez d'abord Résultats pour accéder à la vue de remplacement.

$<day>/$<month>/$<year>

L'aperçu du remplacement devrait afficher :

Launch: 15/10/2026
Review: 02/11/2026
Invalid: 99/99/2026
Short: 2026-1-5

La date invalide a aussi changé. Un motif qui ne compte que des chiffres ne peut pas connaître le nombre de jours dans un mois. Utilisez un analyseur de dates lorsque la validité calendaire compte ; utilisez ce remplacement lorsque vous savez déjà que les dates d'entrée sont valides et que vous avez seulement besoin d'un format d'affichage différent.

Désactiver Trouver toutes les correspondances ne modifie que la première date. Le nombre de correspondances de l'outil passe alors de trois à un. Si un remplacement semble s'arrêter après la première occurrence, vérifiez ce drapeau avant de réécrire le motif.

Les groupes numérotés fonctionnent aussi

Pour un motif plus court, retirez les noms :

\b(\d{4})-(\d{2})-(\d{2})\b

Utilisez ensuite ce remplacement :

$3/$2/$1

Cela produit la même sortie pour cet échantillon. Les numéros de groupe suivent les parenthèses de capture ouvrantes, de gauche à droite. Les groupes nommés sont plus faciles à maintenir si vous prévoyez de modifier le motif plus tard.

Le playground utilise la syntaxe de remplacement JavaScript. Dans le champ de remplacement, $1 insère la première capture, $<year> insère la capture nommée, $& insère la correspondance entière et $$ insère un signe dollar littéral. La référence de remplacement de MDN liste ces formes. D'autres éditeurs et moteurs de regex peuvent utiliser une notation de remplacement différente.

Conservez la source et inspectez les exceptions

Téléchargez l'entrée d'exemple, la sortie toutes correspondances et la sortie première correspondance uniquement pour les comparer. Le fichier de paramètres préserve le motif et le remplacement ; les barres obliques inverses doublées dans ce JSON sont un échappement de chaîne, pas des barres obliques supplémentaires à coller dans le champ de motif.

Le 15 octobre 2026, nous avons exécuté ces exemples avec la même fonction d'évaluation que le playground. Les deux styles de capture ont produit une sortie identique ; la désactivation du drapeau global a changé une correspondance, et la date invalide a toujours correspondu. Le registre des résultats inclut ces vérifications et les hachages des fichiers.

Pour un vrai brouillon, conservez une copie intacte et incluez quelques lignes qui ne devraient pas changer dans votre test. Un aperçu plausible n'est pas une preuve que chaque remplacement est correct.