Aller au contenu principal

@babel/plugin-transform-duplicate-named-capturing-groups-regex

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

info

Ce plugin est inclus dans @babel/preset-env, au sein de ES2025.

Ce plugin transforme les littéraux d'expressions régulières pour prendre en charge les groupes capturants nommés en double. Il ne modifie pas le constructeur new RegExp, car ses arguments ne peuvent pas être transformés statiquement à l'avance : pour gérer le comportement à l'exécution des fonctions/classes, vous devrez utiliser un polyfill à la place.

Exemples

Entrée

JavaScript
var re = /(?<year>\d{4})-(?<month>\d{2})|(?<month>\d{2})-(?<year>\d{4})/;

console.log(re.exec("02-1999").groups.year);

Sortie

JavaScript
var re = _wrapRegExp(/(\d{4})-(\d{2})|(\d{2})-(\d{4})/, {
year: [1, 4],
month: [2, 3],
});

console.log(re.exec("02-1999").groups.year);

Installation

npm install --save-dev @babel/plugin-transform-duplicate-named-capturing-groups-regex

Utilisation

Avec un fichier de configuration (Recommandé)

babel.config.json
{
"plugins": ["@babel/plugin-transform-duplicate-named-capturing-groups-regex"]
}

Via CLI

Shell
babel --plugins @babel/plugin-transform-duplicate-named-capturing-groups-regex script.js

Via l'API Node

JavaScript
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-duplicate-named-capturing-groups-regex"],
});

Options

runtime

boolean, par défaut true

Lorsque cette option est désactivée, Babel n'encapsule pas les expressions régulières avec l'aide _wrapRegExp. Le résultat ne prend en charge que les références internes de groupes, et non les propriétés à l'exécution :

JavaScript
var stringRe = /(?:(?<quote>")|(?<quote>')).*?\k<quote>/;

stringRe.test("'foo'"); // "true", works
stringRe.exec("'foo'").groups.quote; // undefined
astuce

Vous pouvez en savoir plus sur la configuration des options de plugin ici

Références