2012-06-27 1 views
0

J'utilise l'expression suivante pour valider des e-mails:REGEX Validation Email pour ne pas autoriser Commas dans les domaines

^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?:[a-zA-Z]{2}|com|COM|CoM|cOM|coM|COm|edu|org|net|gov|biz|info|name|aero|biz|info|jobs|museum)\b 

Cependant, il me permet toujours d'entrer dans un e-mail invalide, comme ci-dessous ...

[email protected],uk 

Je ne veux pas autoriser la virgule entre le co et uk.

Des suggestions?

+0

Regex peut être très différent dans différentes langues. Quelle langue utilisez-vous? – vandershraaf

+0

Vous ne semblez pas autoriser les virgules n'importe où, est-ce que c'est ce que vous recherchez? – BlackVegetable

+0

Avez-vous cherché SO pour la validation par courriel regex? Cette question a été posée plusieurs fois auparavant. –

Répondre

2

Si vous ne voulez pas de virgules partout, vous pouvez essayer de regarder en avant. Ainsi, si vous avez une virgule n'importe où, elle ne correspondra plus. Bien sûr, vous devrez placer ceci dans votre expression existante, sans les ancres de début et de fin. Je recommande Regexpal pour tester de telles expressions régulières.

En outre, vous souhaiterez peut-être exclure les doubles périodes de votre adresse e-mail. J'utilise:

^(?!.*\.{2})[ ]*[\w]+[\w\.]*[\w]*@[\w]+\.[a-zA-Z]+[ ]* pour mes besoins.

Maintenant \w permet de [A-Za-z0-9_] ce qui est étrange en raison du trait de soulignement, mais je suis sûr que underscores sont autorisés dans les adresses e-mail. Cela empêche également une double période dans votre adresse e-mail ainsi que de ne pas autoriser le premier ou le dernier caractère à être une période, ce qui est illégal.

+0

Oui, je ne souhaite pas autoriser les virgules partout, car cela ne concerne qu'une seule adresse e-mail. Il n'est donc pas nécessaire d'ajouter un séparateur de virgule pour plusieurs adresses e-mail. – Steve

+0

Celui-ci semble fonctionner ...^([a-zA-Z0-9 _ \ - \.] +) @ ((\ [[0-9] {1,3} \. [0-9] {1 , 3} \. [0-9] {1,3} \.) | (([A-zA-Z0-9 \ -] + \.) +)) ([A-zA-Z] {2, 4} | [0-9] {1,3}) (\]?) $ – Steve

+0

Cela peut fonctionner, mais soyez prudent car vous ne pouvez pas avoir deux périodes consécutives consécutives avec votre adresse email. Je mettrai à jour ma réponse avec une solution pour cela. – BlackVegetable

Questions connexes