Probleme avec une expression reguliere

Signaler
Messages postés
121
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
18 décembre 2007
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
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

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
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)