Probleme avec une expression reguliere

kgadhi Messages postés 121 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 18 décembre 2007 - 7 oct. 2007 à 10:53
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 8 oct. 2007 à 17:47
Bonjour, et merci d'avance pour votre aide,
Je vous explique mon probleme: Je veux verifier la saisie d'une adresse mail par une expression reguliere, mais mon expression reguliere ne marche pas.
Jaimerais utilser la meme expression que celle que j'utilise en php pour faire les meme tests en local et sur le serveur. La verification en php par contre marche.
Je vous met le code en javascript et en php
<script language="javascript" type="text/javascript">
   var E_Mail = mail_User.value;
   var atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
   var domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
   
   // Une ou plusieurs fois les caractères autorisés avant l'arobase
   // Suivis par zéro point ou plus
   // séparés par des caractères autorisés avant l'arobase
   // Suivis d'un arobase
   // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
   // séparés par des points
   // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
   var verif = '/^' + atom + '+' + '(\.' + atom + '+)*' + [mailto:'@' '@'] + '(' + domain + '{1,63}\.)+' + domain + '{2,63}$/i';

   if (verif.exec(E_Mail) == null) {
      Message += 'Veuillez saisir une adresse mail valide ! \n';
   }
</script>

sous FireFox, j'ai comme message d'erreur "verif.exec is not a function

<?php
   // Verifier le format de l'adresse mail
       public static function verifierEmail($email) {
   $atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
   $domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
   
   // Une ou plusieurs fois les caractères autorisés avant l'arobase
   // Suivis par zéro point ou plus
   // séparés par des caractères autorisés avant l'arobase
   // Suivis d'un arobase
   // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
   // séparés par des points
   // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
   $regex = '/^' . $atom . '+' . '(\.' . $atom . '+)*' . [mailto:'@' '@'] . '(' . $domain . '{1,63}\.)+' . $domain . '{2,63}$/i';
   
   if (preg_match($regex, $email)) {
    return true;
   }
   else {
    return false;
   }
  }
?>

1 réponse

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
8 oct. 2007 à 17:47
B


onjour...





verif.exec is not a function




la fonction exec

applique une expression régulière à une chaîne,


dans ton cas il me semble qu'il faille déclarer ta variable verif comme étant une RegExp de la façon suivante
var verif = new RegExp( ton_expression);
ensuite

verif.exec( E_Mail)
devrait fonctionner...






;0)
0
Rejoignez-nous