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 regexp en Javascript 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)

Ajouter un commentaire


Syndication

Réseaux sociaux