Quelles sont les lunettes de prescription non http://belgiquepharmacie.be/ Unie de liberté de santé oxford

Voici une expression régulière pour capturer les tags HTML doubles1 sous JavaScript.

/<(\w+)((?:\s+\w+(?:\s*=\s*(?:"[\s\S]*?"|'[\s\S]*?'|[^'">\s]+))?)+\s*|\s*)>([\s\S]*?)<\/\1>/gi

Considérons la phrase :

Testons une <tag class="foobar" title="un > dans l'attribut">regexp en Javascript</tag> complexe.

La regex va capturer les éléments suivants :

  • RegExp.$0 = "<tag class="foobar">regex en Javascript</tag>". Le texte qui satisfait le masque complet.
  • RegExp.$1 = "tag". Le nom de la balise HTML.
  • RegExp.$2 = " class="foobar" title="un > dans l'attribut"". Les attributs.
  • RegExp.$3 = "regex en Javascript". Le contenu englobé par les balises ouvrantes et fermantes.

Il sera possible de traiter par la suite les attributs de l’élément.

Merci à Phil Haack pour cette expression régulière adaptée ici pour JavaScript2.


Notes

  1. elle ne tient donc pas compte des balises comme <br/>, <img/> ou <hr/>

  2. notamment pour la capture des retours à la ligne et des attributs. 

publicité (chargement)

4 réponses pour Capturer les balises HTML et leur contenu avec une RegExp sous JavaScript

  1. Alex dit :

    Ca marche pas ta merde. Avec exec() il choppe que la premiere match.

  2. piouPiouM dit :

    tousse Avant d’employer de grands mots, on apprend le fonctionnement des RegExp dans JavaScript.

    La méthode RegExp#exec() ne retourne que la première capture. Je t’invite à tester le code qui suit : http://gist.github.com/470066

    Alors, oui, bien évidemment j’aurai pu donner un exemple qui n’applique pas au minimum 2 fois une regexp si complexe, mais le contenu et la qualité de ton commentaire ne les méritent pas.

  3. Florent V. dit :

    Les gens sont d’un sans-gêne! Ça me dépasse qu’on puisse ainsi utiliser un «Ca» à la place d’un beaucoup plus correct «Ça». Les enfants, sachez que la typographie c’est pas pour les chiens (qui s’en foutent car ils savent pas lire).

Ajouter un commentaire


Syndication

Réseaux sociaux