Se connecter avec
S'enregistrer | Connectez-vous

[JavaScript] Récupérer tous les résultats d'une expression régulière

Dernière réponse : dans Programmation

Bonjour

J'aimerais récupérer tous les résultats satisfaisant un masque avec une expression régulière en JavaScript.

Je m'explique :

J'ai par exemple le code HTML suivant :

  1. <p align="left">Un premier paragraphe</p>
  2. <p align="center">Un deuxième paragraphe centré</p>
  3. <p align="left">Un dernier paragraphe</p>


... et j'aimerais en extraire chaque paragraphe sans les balises <p>.

J'applique donc la regexp suivante '<p(.*)>(.*)</p>' avec la fonction match :

  1. var resultat = html.match(new RegExp('<p(.*)>(.*)</p>', 'gi'));


Mais au lieu d'obtenir (comme je le souhaiterais) ceci :

resultat[0] = 'Un premier paragraphe'
resultat[1] = 'Un deuxième paragraphe centré'
resultat[2] = 'Un dernier paragraphe'

... j'obtiens à la place ceci :

resultat[0] = '<p align="left">Un premier paragraphe</p>'
resultat[1] = ' align="left"'
resultat[2] = 'Un premier paragraphe'

et si j'essaie d'aller plus loins dans le tableau j'obtiens 'undefined'.

La fonction match ne s'en tient donc qu'à la première correspondance trouvée et ne stocke dans un tableau que chaque élément parenthésé (en plus de l'expression entière), et de même pour exec.

N'y a t'il pas une fonction ou un autre moyen qui permette de retourner toutes les expressions correspondantes au masque défini par la regexp ??

Merci beaucoup de vos réponses !
Lassé par la pub ? Créez un compte
Expert Programmation

Salut,

La fonction match retourne tous les résultats entre parenthèses ainsi que le résultat total.
Donc dans ton cas,
<p(.*)>(.*)</p> => elle trouve <p align="left">Un premier paragraphe</p>
(.*) => elle trouve align="left"
(.*) = elle trouve le contenu du paragraphe


Il faut que tu utilises je pense plutôt RegExp.exec()
Lassé par la pub ? Créez un compte
Tom's guide dans le monde