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 :

recherche d'un mot précis dans une chaine


Sujet :

JavaScript

  1. #1
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut recherche d'un mot précis dans une chaine
    Bonjour à tous,

    Je cherche (désespérément) une solution à mon problème car je tourne vraiment en rond..

    J'ai un champs texte qui me permet de rentrer un mot.
    A partir de ce mot je souhaite qu'il soit recherché dans une phrase.
    Donc le mot entier, pas une portion.
    Par exemple :
    Je recherche le mot "bonjour" dans "bonjour gertrude"
    Avec mon code, je peux rentrer "bonjour" ou "bon" et j'ai le même résultat c'est à dire qu'il me le trouve.

    Cependant, je souhaiterai qu'il me dise "ok" que si et seulement si il me trouve le mot "bonjour" et non une portion de ce mot soit "bon"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var t = document.formulaire.mot.value;
     
    		var reg = new RegExp(t, "g");
    		var resultat = ss.search(reg);
    alert(resultat)
    J'ai donc testé avec match(), search() ...

    dans var t j'ai le mot bonjour
    et ma phrase est "bonjour gertrude"

    quelqu'un aurait il une idée?
    merci beaucoup

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var reg = new RegExp('\\b' + t + '\\b', "g");
    Le '\b' (étant donné que tu es dans un constructeur, il faut doubler l'antislash) correspond à une limite de mot. Attention cependant que ça ne fonctionnera pas s'il y a des accents dans le mot recherché puisque les caractères spéciaux ne sont pas considérés comme constituant un mot.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    tu es mon DIEU!!!!!!!!!!!

    merci mille fois!

    en fait, si j'ai bien compris, pour rechercher n'importe quel mot en entier, sans portion, tu dois entourer ta variable de " '\\b' " ?

    j'ai changé, je suis passée à match() et ça fonctionne nickel!

    voici le code, ça pourra peut être servir à quelqu'un d'autre..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function maj () {
    		var ss = document.formulaire.texte.value;
    		var t = document.formulaire.mot.value;
    		var reg = new RegExp('\\b' + t + '\\b', "g");
    		var resultat = ss.match(reg);
    		alert(resultat);
    		if (resultat == null) {
    			alert("désolée, mais mot non trouvé..");
     
    		}
    		else {
    			alert("mot trouvé");
    		}
    merci encore!

  4. #4
    Membre confirmé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Points : 575
    Points
    575
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var reg = new RegExp('\\b' + t + '\\b', "g");
    Attention cependant que ça ne fonctionnera pas s'il y a des accents dans le mot recherché puisque les caractères spéciaux ne sont pas considérés comme constituant un mot.
    encore une dernière question, comment faire pour que les accents soient pris en compte?

    c'est possible autrement?

    Merci !

  5. #5
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Envisage peut-être de passer le mot à rechercher dans une fonction qui remplace les caractères accentués par leurs équivalents non-accentués (uniquement pour créer la regexp, mais sans modifier le contenu du champ, hein ^^), puis recherche la chaine obtenue, quitte à faire subir le même traitement au texte sur lequel porte la recherche.

    Exemple pour la fonction en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String.prototype.sansAccents = function() {
       return this.replace(/[ùûü]/g,"u").replace(/[îï]/g,"i").replace(/[àâä]/g,"a").replace(/[ôö]/g,"o").replace(/[éèêë]/g,"e").replace(/ç/g,"c");
    }
     
    var reg = new RegExp('\\b' + t.sansAccents() + '\\b', "gi");
    var resultat = ss.sansAccents().match(reg);

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  6. #6
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    J'ai fait cette semaine des regex en js et cela fonctionne très bien avec les accents... en encodant tout en utf-8 y a pas moyen qu'il y arrive? Moi c'est comme ça que j'ai fait et ça fonctionne nickel !
    Un petit n'est pas de trop si le message est utile

    "Vous êtes très nombreux dans votre cas? J'ai jamais pensé que les cons étaient en minorité..."

Discussions similaires

  1. [RegEx] preg_match : recherche d´un mot entier dans une chaine
    Par iOops dans le forum Langage
    Réponses: 7
    Dernier message: 04/04/2011, 15h34
  2. Recherche de mot précis dans une suite de mot
    Par Adrien38240 dans le forum C
    Réponses: 4
    Dernier message: 02/06/2008, 11h25
  3. [RegEx] Trouver certains mots entre [] dans une chaine de caractères
    Par Prosis dans le forum Langage
    Réponses: 3
    Dernier message: 22/10/2007, 21h52
  4. [SQL] Retrouver un mot complet dans une chaine
    Par Christophe P. dans le forum SQL
    Réponses: 21
    Dernier message: 06/09/2007, 15h16
  5. Réponses: 13
    Dernier message: 08/08/2006, 09h49

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