Maison > interface Web > js tutoriel > Comment capturer plusieurs groupes dans des expressions régulières JavaScript ?

Comment capturer plusieurs groupes dans des expressions régulières JavaScript ?

Barbara Streisand
Libérer: 2024-11-11 08:30:03
original
1026 Les gens l'ont consulté

How to Capture Multiple Groups in JavaScript Regular Expressions?

Accéder à toutes les captures dans les expressions régulières JavaScript

Le problème survient lorsque vous essayez de capturer plusieurs groupes dans une expression régulière JavaScript, où seul le dernier la capture est conservée.

Considérons l'exemple suivant :

"foo bar baz".match(/^(\s*\w+)+$/)
Copier après la connexion

Au lieu de renvoyer toutes les correspondances comme ["foo", "bar", "baz"], il renvoie uniquement ["baz"]. Ce problème se produit car les groupes de captures répétées écrasent les captures précédentes.

Pour résoudre ce problème, envisagez des approches alternatives :

  • Diviser sur les délimiteurs : Si possible, divisez la chaîne sur un délimiteur connu au lieu d'utiliser un groupe de capture répété.
  • Regex avec g Flag : Utilisez un régulier expression avec le drapeau g pour parcourir toutes les correspondances. Notez que cela peut ne pas être un équivalent exact à la capture répétée de groupes.
  • Correspondance à plusieurs niveaux : Effectuez plusieurs correspondances d'expressions régulières pour capturer des modèles spécifiques, puis divisez-les ou traitez-les davantage.

Par exemple, pour capturer une séquence de mots entourés de < > et divisez-les sur ;, considérez l'exemple suivant :

var text = "a;b;;g;h;i;;j;k;";

var r = /<(\w+(;\w+)*)>/g;

var match;
while ((match = r.exec(text)) != null) {
  print(match[1].split(";"));
}

Cette expression régulière divise la séquence capturée en mots individuels.

Références :

  • [Informations sur les expressions régulières : répétition ou capture Groupes](https://www.regular-expressions.info/repeating-a-capturing-group-vs-capturing-a-repeating-group)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal