IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[DOM] Objet RegExp recherche de pattern


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Points : 49
    Points
    49
    Par défaut [DOM] Objet RegExp recherche de pattern
    Bonjour,

    Voici le cas sur lequel je travaille, je récupère le code source d'une page html contenant plusieurs champs de formulaire, je dois ensuite extraire la valeur de ces champs en ne connaissant que leur nom.
    C'est champs peuvent (malheureusement) contenir absolument n'importe quoi dans l'attribut value, même des caractères non affichables tels que les "backspace", "escape" et même des "line feed".

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <html>
    <head></head>
    <body>
    <input type="hidden" name="Data1" value="Tous les caractères imaginables">
    <input type="hidden" name="Data2" value="Tous les caractères imaginables">
    <input type="hidden" name="Data3" value="Tous les caractères imaginables">
    </body>
    </html>
    Pour ce faire j'ai créé le pattern suivant:
    objRegExp.Pattern = "<input ([a-z]|[0-9]|[""_\-=])* *name=""" & VariableNom & """ ([a-z]|[0-9]|[""_\-=])* *value=""(.|\n)*"">"

    Mais voilà le problème, c'est que peu importe si je demande Data1, Data2 ou Data3 le seul et unique match que ce pattern trouve contient également les champs suivants.
    Exemple le match pour Data1 est "<input type="hidden" name="Data1" value="Tous les caractères imaginables">
    <input type="hidden" name="Data2" value="Tous les caractères imaginables">
    <input type="hidden" name="Data3" value="Tous les caractères imaginables">"

    Pour Data2 c'est: "<input type="hidden" name="Data2" value="Tous les caractères imaginables">
    <input type="hidden" name="Data3" value="Tous les caractères imaginables">"

    J'avais bien pensé trouver ces match, mais j'aurais cru qu'il en trouverais plusieurs, dont le bon (le plus court), que j'aurais alors conservé, mais il ne trouve qu'un match.

    Quelqu'un peut m'aider à ce sujet ? Pourquoi ne trouve-il qu'un match ? (.Global est déjà à true) ou alors y a-t-il un problème avec mon pattern ?
    Merci beaucoup

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,
    Je suggère de transférer le post vers le forum javascript. Il on bcp plus l'habitude de traiter les RegExp.
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Lol, et moi je propose d'utiliser le DOM

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function getValues(HTML) {
        var Dom = document.createElement("div");
        Dom.innerHTML=HTML; // Code html du fichier
        var All = Dom.getElementsByTabName("input");
        var Result=new Object();
        for (var i=0; i<All.length; i++) {
            if (!Result[All[i].name]) {
                 Result[All[i].name]=new Array();
            }
            Result[All[i].name].push(All[i].value);
        }
        return Result;
    }
    Exemple :
    HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html>
      <body>
        <input value="Hello" />
        <input value="Hello" />
        <input value="Data" name="Data" />
      </body>
    </html>
    Resultat de getValues (ici R):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Voici un code qui aurait fourni le même résultat
    R[""][0]="Hello"
    R[""][1]="Hello"
    R["Data"][0]="Data"
    Pour récuperer uniquement la première valeur de Data1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    getUniqueValue=function (HTML, name) {
        try {
           return getValues(HTML)[name][0]
         } catch (ex) {
           return null;
         }
    }
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pattern objet RegExp
    Par Loki13 dans le forum ASP
    Réponses: 1
    Dernier message: 01/08/2009, 18h42
  2. Algo recherche de Pattern
    Par jemore dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 04/07/2006, 17h23
  3. [Regexp] Recherche dans un texte formaté html
    Par YavaDeus dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 09/02/2006, 17h46
  4. [RegExp] Recherche
    Par CUCARACHA dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/10/2005, 11h55
  5. [C#][xml][regexp] Recherche d'une regexp dans un fichier xml
    Par LeJocker dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/10/2005, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo