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 :

La vérification mail par regex ne m'autorise pas le champ vide


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 60
    Points : 30
    Points
    30
    Par défaut La vérification mail par regex ne m'autorise pas le champ vide
    Bonjour, voila je souhaite faire une verification du mail si celui ci est renseigné lors de l'envoie d'un formulaire.

    PRobleme il n'autorise pas le champ vide alors que l'email n'est pas obligatoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function verifierMail
    (champ) {
    var str = champ.value;
    var regexp = new RegExp("^[a-zA-Z0-9_\\-\\.]{3,}@[a-zA-Z0-9\\-_]{2,}\\.[a-zA-Z]{2,4}$", "g");
    if
    (!regexp.test(str)) {
    alert("L'adresse e-mail n'est pas valide !");
    champ.focus();
    return false;
    }
    return true;
    }

  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 : 54
    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
    Ben... il faut indiquer quelque part que si la valeur est vide, c'est bon aussi...

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 60
    Points : 30
    Points
    30
    Par défaut
    un truc comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     else if (str==""){
    return true; }

  4. #4
    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 : 54
    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
    Pas besoin de else... tu peux simplement combiner les deux conditions dans le if avec && ou ||.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 60
    Points : 30
    Points
    30
    Par défaut
    si je combine les deux faut que je change la condition en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    (regexp.test(str) ||str=="" ) {
    return true;
    }alert("L'adresse e-mail n'est pas valide !");
    champ.focus();
    return false;
    }
    Sinon je voit pas ce que tu veux dire

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Ou bien juste mettre le tout en facultatif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var regexp = new RegExp("^([a-zA-Z0-9_\\-\\.]{3,}@[a-zA-Z0-9\\-_]{2,}\\.[a-zA-Z]{2,4})?$", "g");
    à noter que dans les classes il n'est pas besoin d'echapper pour la reg

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var regexp = new RegExp("^([a-zA-Z0-9_.-]{3,}@[a-zA-Z0-9_-]{2,}\.[a-zA-Z]{2,4})?$", "g");
    à condition de mettre le - en dernier afin d'éviter un range

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Conseil pour les prochaines fois : utiliser la forme littérale, c'est plus court, plus joli (selon moi) et y'a moins de caractères à échapper…

    Au passage, quelques simplifications : [a-zA-Z0-9_] c'est la classe \w, donc [a-zA-Z0-9_\-\.] se simplifie en [\w.-] (et comme l'a dit SpaceFrog : dans une classe, pas besoin d'échapper le point, ni le tiret quand il est au début ou à la fin).
    On peut encore simplifier un peu si on met le flag /i, ce qui permet de remplacer [a-zA-Z] par [a-z] tout court.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var regexp = /^[\w.-]{3,}@[\w-]{2,}\.[a-z]{2,4}$/gi;
    Vu la vérification de l'extension (\.[a-z]{2,4}), il est certain que cette regexp ne validera pas toutes les adresses email possibles, surtout avec les plus de 1000 nouvelles extensions de domaine sorties récemment… (exemple, l'extension .paris a 5 lettres). Mais il a déjà été montré que la validation d'adresses email est une épreuve difficile

    Pour rester dans le sujet, ça me paraît plus utile de mettre la condition « email vide » dans le if plutôt que dans la regexp, pour deux raisons :
    • parce que ça se voit plus facilement à la lecture du code
    • parce que le cas « pas d'email » mérite (selon moi) un traitement différent que le cas « l'email doit être vérifié ».

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

Discussions similaires

  1. [XL-2010] Envoi mail par excel avec boucle pour tous les champs
    Par jul2012 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/11/2012, 15h54
  2. L'envoi automatique du mail par cron ne se fait pas
    Par skawll dans le forum Langage
    Réponses: 2
    Dernier message: 12/12/2011, 16h33
  3. C# et vérification saisie par Regex
    Par PatStan17 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 05/05/2009, 10h56
  4. Vérification de mail et de téléphone par regex
    Par mLk92 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/07/2007, 18h59
  5. Navigateur et client mail par défaut
    Par gibet_b dans le forum Applications et environnements graphiques
    Réponses: 10
    Dernier message: 28/07/2004, 21h02

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