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 :

ne garder que l'alpha


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut ne garder que l'alpha
    Bonjour,

    Sur un formulaire, je demande le prénom. je veux récupérer que la partie alpha quelque soit les erreurs de saisie (espace en trop, ponctuation, caractère spéciaux)

    J'ai donc fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(!formulaire_champ.value.match( [a-zA-Z] )){alert("Erreur")}
    Mais il accepte tout, c'est une vrai passoire.

    Merci pour vos éclaircissements

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

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Attention à la syntaxe de ta regexp

    Soit tu utilises un littéral entre "/", soit tu utilises une chaine, mais là ce que tu passes en argument à match n'est ni une chaine ni une regexp.

    Je te conseillerais donc plutôt quelque chose comme :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ((/[^a-z\-]/i).test(formulaire_champ.value)) {
       alert("Le prénom saisi comporte des caractères invalides");
    }
    De plus, comme tu le vois, je te conseillerais d'utiliser Regexp.test plutôt que String.match, dans la mesure où ce n'est qu'un test booléen au final, et que tu n'as pas besoin du "compte-rendu détaillé" que renvoie match.

    Autre détail : tu ne veux pas accepter les "-" ? Et mon pote Jean-Claude alors ? (je l'ai ajouté à la regexp dans mon exemple, mais si pour une quelconque raison ça ne te plaisait pas, garde
    J'en ai même profité pour te suggérer un message un peu plus "informatif"

  3. #3
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Merci.

    Pardon pour ton pote jean-claude, mais je dois enregistrer à la norme postal, c'est à dire en majuscule, sans accent, sans ponctuation ni caractères spéciaux.

    Donc le plus simple ce serait que je remplace tout à la saisie pour ne garder que les lettres

    Donc quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formulaire_champ.value.replace(/[^a-z]/i, '')
    Mais il faudrait que je puisse dire ce qui est différent de /[^a-z]/i, doit être remplacé par des espaces et ensuite ne garder qu'un seul espace entre chaque mot.

  4. #4
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Jean claude sans "-", donc avec un espace ne passe pas

    Pour accepter espace c'est "\s" je crois.

    mon expression va donc être


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

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Heu... attends

    On parlait au départ d'un test affichant un alert. Là, on est dans l'automatisation avec un replace.
    Alors donc ... l'utilisateur est censé corriger ou bien c'est le JS ? ^^

    Sinon, à part ça attention, pour désigner un espace, utilise un vrai espace, pas "\s", à moins que tu veuilles aussi accepter les tabulations, retours chariot, etc.

    Enfin, pour que ton replace fonctionne sur toutes les occurrences de la regexp dans la chaine (par exemple en cas de "Jean-François-Xavier" ou autre bizarrerie), ajoute le modificateur "g" après le littéral de la regexp (à côté du "i")

  6. #6
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Oui au départ c'était un alert, mais ta remarque sur ton ami Jean-claude était bonne.

    Plutôt que d'afficher un alerte, autant corriger en JS la saisie.

    Je ne sais pas comment faire, mais j'ai retenu l'idée.

    C'est bien d'un espace entre chaque mot dont j'ai besoin, pas d'une tabu ou d'un saut de ligne.

    Et pour Jean françois xavier, mon expression ne fonctionne pas en faisant Si je veux remplacer tout ce qui n'est pas alpha je fais ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champ.replace(/[^a-z\s]/i, ' ')

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

Discussions similaires

  1. condition: ne garder que certains alpha-numerique
    Par bibi5883 dans le forum Débuter
    Réponses: 8
    Dernier message: 12/09/2007, 16h30
  2. Réponses: 4
    Dernier message: 15/06/2007, 14h58
  3. Ne garder que le plus grand
    Par mobscene dans le forum Langage
    Réponses: 30
    Dernier message: 23/12/2005, 01h23
  4. selection avec group by mais ne garder que ...
    Par Larson dans le forum Langage SQL
    Réponses: 13
    Dernier message: 22/06/2005, 17h23
  5. [Oracle 8i] ne garder que certains enregistrements (COUNT ?)
    Par delphim dans le forum Langage SQL
    Réponses: 13
    Dernier message: 23/02/2005, 14h30

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