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 :

Problème d'expression régulière


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut Problème d'expression régulière
    Bonjour à tous,
    j'ai besoin de tester si un champ contient des caractères spéciaux mais je suis totalement néophyte en ce qui concerne l'utilisation des expressions régulières.Voilà ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     function verif_caract(champ){
      	var reg= new RegExp('\W','gi');
      	var retour=false;
      	if (reg.test(champ)){
      		 alert('OK');
      		retour = true;
        }
      	return retour;
      }
    cela ne me retourne absolument rien pas même une erreur. Si quelqu'un pouvait m'aiguiller merci d'avance.

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Qu'est-ce que tu appelles "caractères spéciaux" ? T'en as besoin pour quoi faire ?

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Caractères spéciaux = tout ce qui n'est pas alphanumérique
    le but est de les détecter pour empêcher la validation du formulaire tant il en existe dans un champ afin d'éviter des problèmes de d'insertion dans une bdd

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    De manière générale, je ne filtre pas sur ce que je veux pas, mais plutot sur ce que je veux (liste noire vs liste blanche)
    tu veux que du alphanumerique ? alors récupère a-zA-Z0-9_ au lieu d'enlever le reste... non ?

    Sinon n'oublie pas que JS peut-etre desactivé, et dans ce cas là, l'argument "sql injection" ne tient plus la route...

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    l'activation/désactivation du JS ne pose pas de problème c'est en interne à l'entreprise, j'ai donc le contrôle des paramètres clients.

    Ce que je voulais c'etait tester la présence des caractères non voulus dans le champ et ayant trouvé le paramètre \W pour les caractères autres que alphanum. je trouvais ça plus simple de l'utiliser( un peu feignant !!) mais je vais tester ton masque si le résultat est le même moi ça m'importe peu

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Si tu enleve gi, ca change quelque chose ?

    Sinon je persiste : Never trust the client... C'est pour moi une très mauvaise chose que le serveur fasse confiance aux resultats du javascript.

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    http://www.regular-expressions.info/...ptexample.html
    j'ai testé \W, et sans les flags gi ca marche...

  8. #8
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Je suis allé sur ton lien qui est très bien. J'ai adaptée ma fonction mais ça ne fonctionnait pas, j'ai fait un copier/coller/adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function verif_caract(){
      	var re = new RegExp("\W");
        alert(document.getElementById('Num_agence').value)
      	  if (document.getElementById('Num_agence').value.match(re)) {
      	    alert('Successful match');
      	  } else {
      	    alert('No match');
      	  }
      }
    il me retourne toujours 'no match'
    la chaine envoyée est 0@ la meme testé sur le site.

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (/\W/.test(value)) ...

  10. #10
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Ca marche maintenant
    et ça marche si je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.Agence.Num_agence.value.match(/\W/)
    Donc cela doit venir du fait que il considérait mal le masque de saisie à tester ?

  11. #11
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    je suis obligé de dérésolufier mon post.
    la syntaxe avec \W me considérait les espaces comme non valide.
    je suis donc passé à la syntaxe de Mr N. (ou presque):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    champ.match(/[a-zA-Z0-9\s]/);
    ...
    il ne me retourne faux que s'il n'y a que des caractères autre ceux indiqués dans le masque.
    là je ne comprends plus rien

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    ceci devrait matcher des mots ou des espaces :
    PS: je suis une quiche en expression regulière, ne pas prendre ce que je propose au pied de la lettre

  13. #13
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Ouais ben alors on est deux mais pour l'instant ce que tu proposais marchait alors que ce qui venait de moi pas du tout
    je teste de suite...

  14. #14
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Trouvé !
    Ca matche seulement si on ne trouve un truc qui n'est ni un "mot" (\w), ni un espace (\s)

  15. #15
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Avec ta syntaxe tout passe quelque soit le caractère
    Mais cela m'a inspiré :
    Et là ça à l'air de fonctionner.
    Merci pour ton temps

  16. #16
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    ouais ça fonctionne j'ai plus qu'a choisir. merci

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

Discussions similaires

  1. Problème d'expressions régulières
    Par AnkyFive dans le forum Langage
    Réponses: 21
    Dernier message: 20/07/2006, 09h03
  2. petit problème d'expression régulière
    Par stoyak dans le forum Langage
    Réponses: 5
    Dernier message: 16/05/2006, 12h20
  3. [regexp] petit problème d'expression régulière
    Par LE NEINDRE dans le forum Langage
    Réponses: 14
    Dernier message: 16/12/2005, 11h33
  4. Problème d'expression régulière
    Par SiM07 dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 18h57
  5. Problème d'expression régulière
    Par Neitsa dans le forum Général Python
    Réponses: 3
    Dernier message: 11/08/2005, 15h29

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