Bloc-note d'un développeur web
Dans : Snippets
12 août 2009Voici 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.
elle ne tient donc pas compte des balises comme <br/>, <img/> ou <hr/>. ↩
notamment pour la capture des retours à la ligne et des attributs. ↩
[…] http://pioupioum.fr/snippets/javascript-regex-capture-html-balise-contenu.html […]
Ca marche pas ta merde. Avec exec() il choppe que la premiere match.
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/470066Alors, 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.
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).