l'email de validation javascript
est cette fonction javascript (checkValidity) correct?
function checkTextBox(textBox)
{
if (!checkValidity(textBox.getValue()))
displayError("Error title", "Error message", textBox);
textBox.focus();
}
function checkValidity(e)
{
var email;
email = "/^[^@]+@[^@]+.[a-z]{2,}$/i";
if (!e.match(email)){
return false;
else
return true;
}
}
EDIT: Toutes les réponses appréciés! Merci!
fondamentalement, la réponse à cette question devrait vous apprendre deux choses: 1) beaucoup de gens sont en désaccord comment la mettre en œuvre 2) la solution semble extraordinairement complexe pour quelque chose d'aussi omniprésent...cela signifie probablement que la spécification d'adresses de courrier est cassé 🙂
OriginalL'auteur input | 2010-05-06
Vous devez vous connecter pour publier un commentaire.
E-mail sont définis dans RFC 5322, § 3.4. Le non-terminal est
addr-spec
. La définition s'avère être un peu squirelly, en raison à la fois les complications de spécifications de domaine et de soutenir vieux, obsolète formes. Cependant, vous pouvez faire une sur-approximation pour la plupart des formes avec:Avis qu'il existe un très grand nombre de caractères autorisés. La plupart des reg-ex obtenez la liste de mal. Oui, tous ces personnages sont légales dans un e-mail.
Cette expression ne correspond à certains très rare que les formulaires utilisés comme
"noodle soup @ 9"@[what the.example.com]
-- qui est un e-mail!Peut-être que vous voulez vous assurer qu'au moins un point? Ajouter
\.[-0-9A-Za-z!#$%&'*+/=?^_
{|}~.]+` à la fin! Si vous souhaitez ignorer internationalisés domaines de niveau supérieur, vous pouvez simplifier à l'ajout de\.[A-Za-z]+
Je suis un "Méconnu séquence d'échappement" dans Visual Studio 2012 sur le dot après \
[RegularExpression("^[-0-9A-Za-z!#$%&'*+/=?^_{|}~.]+@[-0-9A-Za-z!#$%&'*+/=?^_{|}~.]\.[-0-9A-Za-z!#$%&'*+/=?^_{|}~.]{2,4}+", ErrorMessage = "Invalid Email")]
Aucune idée pourquoi cela arriverait?Je ne suis pas sûr à ce sujet - utiliser '\\' au lieu de '\'.
OriginalL'auteur MtnViewMark
;
après les déclarations de fonction et si les déclarations?OriginalL'auteur cosy
Non, c'regex n'est pas propre à l'usage. Jetez un oeil à cette à la place (bien que je ne peux pas garantir sa validité).
Aussi, concernant le script lui-même, pourquoi n'êtes-vous pas vérifier comme ceci:
Il semble comme un plus rapide, plus concise et plus lisible solution.
EDIT:
Il est intéressant de noter, qu'il est presque impossible d'écrire une regex qui permet de détecter toute adresse de courriel valide. Par conséquent, vous pourriez être mieux avec une validation de l'algorithme, au lieu d'une regex, comme e-mail valide les adresses peuvent être très, très complexe.
Considérer ce code:
Cela fonctionne de cette façon:
@
, et un seul@
a au moins un.
.
'.Il sera toujours facile de forger une fausse adresse de courriel, mais de cette façon, nous nous assurons que c'est au moins en quelque sorte correctement formaté. Le seul chat que je peux penser, est
@
's à l'intérieur de commentaires, qui doit être parfaitement légal selon le RFC, mais ce code va la traiter comme une erreur.Normal, les utilisateurs d'internet, qui ont des adresses email, ne sera pas échouer. Alors, comment beaucoup il en fait des questions est à vous de décider 😉
La meilleure solution, si l'on est disponible, est de mettre l'adresse dans certains intégrée dans la méthode, et que d'une certaine façon vérifie la validité en tentant d'utiliser l'adresse e-mail.
Je suis très désolé pour la référence. Normalement, je ne fais pas les regexes, donc je ne sais pas.
OriginalL'auteur Sune Rasmussen
Essayez ceci: je suis sûr qu'il prend soin de tous les types de courrier électronique de validation.
HTH
RFC 5322 § 3.4.1 définit la spécification d'adresse e-mail. Il ne permet pas de la plage de caractères énumérés ici. Plus précisément, il ne prend pas en charge les caractères non-ASCII.
OriginalL'auteur Raja
Pas. Il suppose qu'une adresse e-mail ne peut contenir qu'un
@
. Je suggère la lecture de cet article.Vous avez probablement signifiait aussi
\.
au lieu de.
.Pas vrai. Lire la RFC.
En fait, le RFC permet de @ à l'intérieur d'une chaîne entre guillemets qui ne peut venir avant le @ qui sépare le local partie du domaine. Donc, "party@dougs"@example.com est une adresse e-mail valide.
OriginalL'auteur Mark Byers
Voici une expression régulière correspondant à la RFC, à l'exclusion du obsolètes formes. J'ai cassé en composants de sorte qu'il sera facile à lire:
(Note: insensible à la casse.)
Cela ne correspond pas à des adresses de messagerie qui utilisent la cité la forme avant le @ ou le membre de forme après elle, mais alors que ces formes sont valides, ils sont presque jamais vu aujourd'hui, en dehors d'exemples, et elles compliquent beaucoup les regex.
OriginalL'auteur Thom Smith
De la validation d'une adresse e-mail est très difficile. Il n'est même pas la peine de validation sur le côté client, autre que le très de base de vérification pour
@
et.
caractères.La Section 3.4.1 du RFC 5322 donne des précisions sur l'immense variété des caractères juridiques, et vous verrez que la création d'un pare-balles regex va être presque impossible.
J'ai fini par abandonner sur valider, car je voudrais avoir des plaintes d'utilisateurs indiquant leur folle adresse email ne fonctionne pas. Donc, à partir de maintenant, je viens d'essayer d'envoyer l'e-mail et nous espérons qu'il est livré. Si l'envoi échoue, alors je dis à l'utilisateur de leur adresse e-mail est problématique.
OriginalL'auteur Josh Stodola
Tout en faisant quelques recherches je suis tombé sur cette. Il est basé sur la RFC 2822
http://snipplr.com/view/20981/
OriginalL'auteur Xerri