Maison > Article > interface Web > Comment capturer plusieurs groupes dans une expression rationnelle JavaScript lorsque la répétition ne conserve que la dernière correspondance ?
Capturer plusieurs groupes dans JavaScript Regexp
Lorsque vous travaillez avec des expressions régulières en JavaScript, il est possible de capturer plusieurs groupes de correspondances dans une chaîne . Cependant, il existe des limites au nombre de groupes qui peuvent être capturés et récupérés.
Considérez l'expression rationnelle JavaScript suivante :
"foo bar baz".match(/^(\s*\w+)+$/)
On pourrait s'attendre à ce que cette expression rationnelle renvoie un tableau contenant l'intégralité de chaîne "foo bar baz" ainsi que chaque mot individuel :
["foo bar baz", "foo", " bar", " baz"]
Cependant, l'expression rationnelle renvoie en fait uniquement la dernière correspondance capturée :
["foo bar baz", " baz"]
Ce comportement se produit car, dans la plupart Avec les saveurs d'expression rationnelle, seule la dernière capture d'un groupe de capture répété est conservée. En JavaScript, la répétition d'un groupe de capture permet uniquement de capturer exactement le nombre spécifié de chaînes par correspondance.
Pour surmonter cette limitation, il existe plusieurs options :
Exemple :
Pour faire correspondre la chaîne
var text = "a;b;<c;d;e;f>;g;h;i;<no no no>;j;k;<xx;yy;zz>;"; var r = /<(\w+(;\w+)*)>/g; var match; while ((match = r.exec(text)) != null) { print(match[1].split(";")); }
Cette approche utilise deux niveaux de correspondance pour extraire des mots individuels de la chaîne.
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!