Un coup de pousse pour une Regex please :)

Fermé
Max - Modifié par Max le 25/05/2011 à 14:34
 Max - 26 mai 2011 à 10:27
Hello tout le monde

J'ai une restriction sur le champ e-mail de mon formulaire. Je dois accepter toutes les syntaxe d'e-mail sauf celles qui finissent par : gmail.com par exemple.

Voici la syntace que j'ai réalisé mais qui ne marche pas :

"email_client":{
"regex":"/^[a-zA-Z0-9_\.\-]+\@^(gmail.com)|([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/",
"alertText":"* Adresse email invalide"}

Je vous remercie d'avance les gens et bonne journée :)

1 réponse

Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
Modifié par Leviathan49 le 25/05/2011 à 14:40
^(gmail.com) ne peut pas marcher. Le ^ ne signifie une négation que entre des crochet. Remplace le par (?!gmail\.com).
De plus, avec ta regex tout ce qui est situé après le @ et qui n'est pas de la forme gmail.com sera considéré comme valide à cause de ton "OU" | . Je te conseillerais de faire deux tests, un pour la validité de l'email et un pour vérfiier si c'est une adresse gmail.
0
Merci de ta réponse,
En fait quand je mets seulement [^(gmail.com)] ça marche. Mais j'arrive pas à combiner les deux en fait : La syntaxe + le nom de domaine a exclure.
0
J'ai fait autre chose :

Dans mon formulaire j'ai :

<label for="E-mail" >E-mail</label>
<input type="text" class="validate[required,custom[email_client],custom[email_client1]] text-input" id="email_prestataire" name = "email_prestataire" size="30" value="" />

et dans le fichier javascript j'ai mis 2 regex (2 vérifications en gros)

"email_client":{
"regex":"/^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/",
"alertText":"* Adresse email invalide"},
"email_client1":{
"regex":"/^[a-zA-Z0-9_\.\-]+\@[^(gmail.com)]$/",
"alertText":"* Adresse email ne peut pas finir par gmail.com"},


Mais quand je test il m'affiche toujours "Adresse email ne peut pas finir par gmail.com" donc il ne prend plus en considération la premiere regex ??

Snif snif je suis perdu :(
0
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
Modifié par Leviathan49 le 26/05/2011 à 09:39
Non, non, non.
Je me suis mal exprimé désolé.
Le ^ ne signifie une négation que entre des crochet, mais [^(gmail.com)] signifie "un caractère quelconque qui n'est pas 'g','m','a','i','l','c','o','.','(',')' ".
Entre temps j'ai un peu reflechis à cela et la regex /^[a-zA-Z0-9_\.\-]+\@(?!gmail.com)/ (sans $ final) devrait suffire pour faire le 2ème tests.
Ou sans utiliser les regex tu peut aussi couper ta chaine en 2 au niveau du @ et vérifier si la deuxième partie est égale à "gmail.com"
0
Merci pour ta réponse mais malheureusement ça ne marche pas...en plus maintenant il fait plus aucun contrôle sur le mail, c'est à dire qu'on peut taper n'importe quoi sans qu'il m'écrive "adresse email invalide"...
0
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
26 mai 2011 à 09:55
Euh pardon erreur de copier coller. La regex /^[a-zA-Z0-9_\.\-]+\@(?!gmail.com)([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/ ne devrait pas marcher désolé. J'ai modifié mon message précédent.
0