@babel/plugin-transform-duplicate-named-capturing-groups-regex
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 →
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
var re = /(?<year>\d{4})-(?<month>\d{2})|(?<month>\d{2})-(?<year>\d{4})/;
console.log(re.exec("02-1999").groups.year);
Sortie
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
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/plugin-transform-duplicate-named-capturing-groups-regex
yarn add --dev @babel/plugin-transform-duplicate-named-capturing-groups-regex
pnpm add --save-dev @babel/plugin-transform-duplicate-named-capturing-groups-regex
bun add --dev @babel/plugin-transform-duplicate-named-capturing-groups-regex
Utilisation
Avec un fichier de configuration (Recommandé)
{
"plugins": ["@babel/plugin-transform-duplicate-named-capturing-groups-regex"]
}
Via CLI
babel --plugins @babel/plugin-transform-duplicate-named-capturing-groups-regex script.js
Via l'API Node
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 :
var stringRe = /(?:(?<quote>")|(?<quote>')).*?\k<quote>/;
stringRe.test("'foo'"); // "true", works
stringRe.exec("'foo'").groups.quote; // undefined
Vous pouvez en savoir plus sur la configuration des options de plugin ici