Expression régulière

Résolu
Lili_754 Messages postés 137 Statut Membre -  
xamurai Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,

Je cherche à faire une expression reguliere d'une adresse mail academique de type: prenom.nom@etr.toto.fr

sachant que le nom et prenom sont des lettres comprisent entre [a-z] mais de taille variant c'est ici que je rencontre mon premier souci.

Merci d'avance :)

3 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    en php en javascript ?

    cherche sur G.... verifier adresse mail
    0
    1. Lili_754 Messages postés 137 Statut Membre 2
       
      En php. J'ai reussi à faire ça mais est ce la meilleur façon de proceder?
      #un mail d'étudiant de l'UPMC
      $exp2="#^[a-z]+\.[a-z-]+@etu\.upmc\.fr$#";
      $chaine2="lili.papi-molo@etu.upmc.fr";
      echo "".listeOccurences($exp2,$chaine2);
      0
  2. Alain_42 Messages postés 5413 Statut Membre 904
     
    voila

    $regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/'; 
    $email=pierre.durand@hotmail.com
    //appliquer la fonction preg_match() sur l'adresse email a tester
    if (preg_match($regex, $email)) {
         echo $email . "  est au format valide;
    } else { 
         echo $email ." n'est dans un format valide;
    } 
    0
  3. xamurai Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   15
     
    Alain_42 était sur le bon chemin:
    donc modifions un peu son code:

    $str = "Jean.tevi@free.com";

    /* 
    explication   
    
    1)  prenom/nom:  lettres Maj/Min Chiffre, mais ne commence pas par un chiffre ou  
         un tiret, ne se termine pas par un tiret: 
    
             ([^\d][\w\d-]*[\d\w])   
    
    2) l'hôte: lefttres chifres, sous-domaine, ne commence ni se termine par un  
         tiret: 
              
           [\d\w][\w\d\.\_-][\d\w]  
    
    3) s'il n'existe que 1 sous-domaine et 1 domaine:  
    
         [\d\w][\w\d\_-][\d\w]\.[\d\w][\w\d\_-][\d\w]  
    
    
    le top-domain (,net , .edu, .info) requiert minimum 2 lettres: 
    
          [\w]{2,}  
    
    */ 
    
    $regex = "/^([^\d][\w\d-]*[\d\w]) \. ([^\d][\w\d-]*[\d\w])[@]([\d\w][\w\d\.\_-]+[\d\w]\.[\w]{2,})$/";   
    
    
    if(preg_match($regex , $str, $m)) {  
     echo "prenom: {$m[1]} , nom: {$m[1]}  Host: {$m[3]}";  
    }  
    else  
    {  
     echo "email invalide";  
    }
    
    
    0