Quelle est la différence entre les RegExp de la fonction exec() et de la Chaîne de fonction match ()?

Si je l'exécute:

/([^\/]+)+/g.exec('/a/b/c/d');

J'obtiens ceci:

["a", "a"]

Mais si je l'exécute:

'/a/b/c/d'.match(/([^\/]+)+/g);

Puis-je obtenir le résultat attendu de cette:

["a", "b", "c", "d"]

Quelle est la différence?

  • vous boucle avec exec pour obtenir tous les sous-sélections.
  • Notez que le deuxième + n'est pas nécessaire, car match sera de retour tous les sous-expressions déjà. .exec retourne seulement un à chaque fois, donc il n'a pas besoin que + soit.
  • En plus de cela, imbriqués les quantificateurs comme les deux points positifs doivent être utilisés avec prudence, car ils facilement conduire à catastrophique mandature.
  • Merci pour le lien. Que m'inciter à en apprendre sur les quantificateurs possessifs et atomique de regroupement. De très belles choses à comprendre.