Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un replace et une regex étrange...

Sujet résolu
    10 juin 2010 à 15:30:44

    Bonjour à tous!!

    Voila j'ai un script que j'ai pris (je ne connais pas assez javascript pour en écrire un moi même j'ai donc téléchargé formcheck) pour vérifier que les pseudo de mes membres étaient bien en un seul mot. Mais il a un comportement... Etrange! o_O Laissez moi vous expliquer :-°

    Voici la partie du script qui compte les mots:
    var words = input.value.replace(/[ \t\v\n\r\f\p]/m, ' ').replace(/[,.;:]/g, ' ').clean().split(' ');
    var wordslength = words.length;
    


    Cependant j'ai quelques résultats incohérents:
    Si je mets mon pseudo: bfvww2, tout va bien j'ai bien un mot.
    Par contre si je mets Tapioka ou encore tersdpi il me retourne 2 :p

    C'est très très étrange. Ce code n'est pas de moi et en supprimant le premier replace() j'ai supprimé cette erreur de comptage. Par contre si il était là c'est certainement pour quelque chose non ^^ Donc j'aimerais, au lieu de supprimer, comprendre pourquoi ces erreurs.

    Merci d'avance à vous pour votre aide!!! :)
    • Partager sur Facebook
    • Partager sur Twitter
      10 juin 2010 à 15:43:27

      Le premier supprime apparemment les tabulations (\t\v), retour à la ligne (\n\r)
      le tag "m" à la fin signifie multiline
      pour \f et \p, je ne connais pas leur signification.
      • Partager sur Facebook
      • Partager sur Twitter
        10 juin 2010 à 15:46:44

        Oui c'est ce que j'ai trouvé sur les tutoriaux divers. Mystère pour F et P je ne trouve nulle part sur le net. Une idée de pourquoi ça compte tapioka comme 2 mots? :p

        Ah ben tiens... En remplaçant tout par \s ça a l'air de passer. Si je rajoute le \p ça ne passe plus. Je ne trouve pas de renseignement sur cette lettre: à quoi sert-elle???? o_O
        • Partager sur Facebook
        • Partager sur Twitter
          10 juin 2010 à 16:06:43

          C'est quoi cette méthode clean() ? o_O C'est pas du Core si ?

          Le \f, ça représente le caractère ASCII appelé "Form feed" (http://en.wikipedia.org/wiki/Form_feed).

          Le \p par contre n'a aucune signification particulière... et représente donc un "p" tout ce qu'il y a de plus classique...

          alert("papa".replace(/[\p]/g,'')); // Affiche "aa" ...
          



          EDIT : D'où "tapioka" qui devient "ta ioka", en deux mots.
          • Partager sur Facebook
          • Partager sur Twitter
            10 juin 2010 à 17:08:01

            La méthode clean provient en effet du plus haut dans la classe. J'ai repris que les éléments marquants du script relatifs au soucis.

            En tout cas en effet j'ai viré le p et ça marche. Qu'est-ce que ça faisait là on se demande (formcheck est quand même assez utilisé, étrange que le problème ait pas été remonté). ^^

            Merci beaucoup à vous pour votre aide.
            • Partager sur Facebook
            • Partager sur Twitter

            Un replace et une regex étrange...

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown