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 :

[Expressions régulières] l'alphanumérique


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Par défaut [Expressions régulières] l'alphanumérique
    Bonjour,

    Je me casse la tête depuis un petit moment à essayer de contrôler si mon champ de formulaire est une chaine caractère alphanumérique, pouvant contenir des espace " " et des "-", "_".

    Sous PHP, la comparaison fonctionne parfaitement bien avec l'expression suivante avec ereg : "^[A-Za-z -_0-9]+$"

    Par contre, sous javascript, avec la fonction search : /^[A-Za-z -_0-9]+$/

    ca ne fonctionne qu'à moitié.

    En effet si je rentre par exemple ceci :"#" ça me retoune FAUX
    maintenant ceci : "# # }" ça me retourne FAUX
    ceci : "truc 2 ouf" ça retourne VRAI
    Mais là où est le problème, ceci : "truc 2 ouf !" me retourne VRAI


    Hors le résultat attendu, c'est que mon test me retourne FAUX dès qu'un caractère non autorisé ce trouve dans la chaine.

    Quelqu'un peut-il m'éclairé? J'ai parcouru pas mal de docs sur le net, sous PHP tout fonctionne assez bien. Sous javascript je rame...

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Par défaut
    c'est quoi ton code ?

  3. #3
    Membre éclairé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Par défaut
    Pas grand chose de spécial :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(var_a_tester.value.search(/^[A-Za-z-]+$/))
        //cette chaine est alphanumérique
    else
        //cette chaine n'est pas alphanumérique
    en PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(ereg("^[A-Za-z-]+$", $var_a_tester))
        //cette chaine est alphanumérique
    else
        //cette chaine n'est pas alphanumérique

    En PHP ça fonctionne très bien.

  4. #4
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salux,

    En PHP ou JS, le tiret est un caractere special dans les classes de caracteres. Donc il faut "l'echapper"

  5. #5
    Membre éclairé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Par défaut
    Salut,

    Merci pour ta réponse, apparement c'est bien ce qui clochait en JS. Pour PHP il semble que la modification ne soit pas nécessaire.

    Seul hick, la fonction marche, mais en inverse...

    donc pour obtenir le résultat que je souhaite je suis obligé de faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(var_a_tester.value.search(/^[A-Za-z-]+$/))
        //cette chaine est alphanumérique
    else
        //cette chaine n'est pas alphanumérique
    Rajouter le "^"

    Peux-tu m'expliquer pourquoi ou quelqu'un?

    Merci en tout cas pour la solution de l'échappement

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return !/[^\s\w-]/.test(chaine)
    (ligne à placer en fin de fonction, éventuellement associée à une alerte)

    ceci devrait te permettre d'autoriser précisément les valeurs alphanum, les espaces et tirets "_" et "-";

  7. #7
    Membre éclairé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Par défaut
    Un grand merci à tous pour votre aide précieuse

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/03/2013, 10h50
  2. [RegEx] Expression régulière sur des caractères alphanumériques
    Par hash95 dans le forum Langage
    Réponses: 3
    Dernier message: 16/01/2008, 17h26
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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