Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/02/2011, 15h25   #1
Membre du Club
 
Inscription : février 2007
Messages : 187
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 187
Points : 41
Points : 41
Par défaut Récupérer un span et son contenu, dans un string

Bonjour je cherche à construire une Regexp qui me permettrai de récupérer un élément <span> et son contenu dans une chaîne de caractères, mais uniquement cet élément <span>.
Je m'explique :

La chaine de caractères :

Code :
var uneChaine = '<span class="classeSpeciale">du contenu</span><span class="uneAutreClass">un autre contenu</span><div> encore du contenu</div>';
Je voudrais récupérer uniquement '<span class="classeSpeciale">du contenu</span>';

Voilà ce que j'ai fait mais cela me récupère '<span class="classeSpeciale">du contenu</span><span class="uneAutreClass">un autre contenu</span>'

Code :
1
2
var oRegContact = new RegExp('<span class="classeSpeciale">(.|\\s)*</span>',"gi");
oRegContact.exec(uneChaine );
Si quelqu'un a une solution, je suis preneur.
Merci d'avance pour vos réponses.
Neilime05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 15h35   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
pourquoi exec ?

=> match
Code :
1
2
3
var uneChaine = '<span class="classeSpeciale">du contenu</span><span class="uneAutreClass">un autre contenu</span><div> encore du contenu</div>';
var reg=/<span class="classeSpeciale">(.(?!(\/span>)))+<\/span>/
alert(uneChaine.match(reg)[0])
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 15h46   #3
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
T'as ça qui fonctionne :
Code :
oRegContact = new RegExp('(<span class="classeSpeciale">(?:.|\\n)*?</span>)',"gi");
Par contre il ne faut pas que tu aies de <span> imbriqué donc les regex sont assez limitées dans ce contexte.

Edit : il est préférable d'utiliser match comme y dit Spaffy.
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 16h52   #4
Membre du Club
 
Inscription : février 2007
Messages : 187
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 187
Points : 41
Points : 41
Merci pour vos réponses,

La Regexp de Loceka est parfaite pour mon problème. Est ce qu'on pourrais m'expliquer la logique de cette regexp ?
Neilime05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 17h02   #5
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
En fait, par défaut (/!\ le comportement varie selon l'implémentation du parseur de regex) le .* te prendre la plus grande chaîne qui correspond à ta recherche.

Donc la regex /.*a/ appliquée à la chaîne "ababa" va te retourner "abab".

Pour inverser ce comportement, et donc prendre la plus petite chaîne correspondant à la recherche, il faut ajouter un ? derrière l'opérateur (+ ou *). Dans ce cas, la regex de tout à l'heure devient : /.*?a/ et appliquée à la même chaîne elle retrournera "a".
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h54.


 
 
 
 
Partenaires

Hébergement Web