E-mail de Validation en Java
J'ai été la recherche de la meilleure façon possible de vérifier si une String
était une Adresse de courriel valide. Je suis maintenant fixé sur les deux options, à savoir., à l'aide de javax.mail.internet.InternetAddress
; ou à l'aide d'Apache Commons EmailValidator
, qui utilise en interne compliqué regex analyseur.
Je me demandais si il n'y a aucun avantage sur le choix de l'un sur l'autre en termes d'exactitude, ou est à la fois bien? Je sais pour un fait que InternetAddress
ne gère pas les caractères non-ascii efficace dans certains cas.
Je voudrais utiliser Apache Commons car je ne vois rien de mal avec la regex validateur. Je ne connais pas de meilleur moyen de valider une adresse email en plus, en utilisant une expression régulière. Faites-vous?
jetez un oeil à download.oracle.com/javaee/5/api/javax/mail/internet/...
merci pour le lien. Comment savez-vous que l'intérieur, la bibliothèque n'est pas à l'aide d'une Regex expression de valider une adresse email? Et si elle n'est pas, est-ce vraiment mieux que d'utiliser une regex expression? Le fait de valider() la méthode ne dit pas comment elle fait pour effectuer la validation; il dit seulement que "les contrôles de nombreuses règles mais pas tous relatifs à la RFC 822"
Ma question est très SIMPLE: est-il un piège de choisir l'une plutôt que l'autre?
Il n'y a pas de pièges car je suis sûr que les deux s'acquittent de leur tâche (validation d'une adresse e-mail) de manière appropriée.
jetez un oeil à download.oracle.com/javaee/5/api/javax/mail/internet/...
merci pour le lien. Comment savez-vous que l'intérieur, la bibliothèque n'est pas à l'aide d'une Regex expression de valider une adresse email? Et si elle n'est pas, est-ce vraiment mieux que d'utiliser une regex expression? Le fait de valider() la méthode ne dit pas comment elle fait pour effectuer la validation; il dit seulement que "les contrôles de nombreuses règles mais pas tous relatifs à la RFC 822"
Ma question est très SIMPLE: est-il un piège de choisir l'une plutôt que l'autre?
Il n'y a pas de pièges car je suis sûr que les deux s'acquittent de leur tâche (validation d'une adresse e-mail) de manière appropriée.
OriginalL'auteur kuriouscoder | 2011-08-24
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un EmailValidator de Apache Commons Validator bibliothèque:
isValid méthode vérifie si un champ a une adresse e-mail valide.
C'est le meilleur Java adresse email de validation de la méthode en fonction de cette question
Quel est le meilleur Java adresse email de validation de la méthode?
EmailValidator.getInstance(false).isValid(email);
Mon mauvais, Que par ce qu'il est e-mail valide, en.wikipedia.org/wiki/Email_address#Local-part
OriginalL'auteur Boris
Pour quelque chose d'aussi bien établi que l'adresse email format, la différence entre les deux approches est minuscule. Puis de nouveau, il y a cinquante ans, les gens n'ont jamais vu la nécessité d'utiliser 4 chiffres pour l'encodage des années, donc...
Le seul "piège" avec l'aide de la regex de Apache Commons, c'est que sa fonctionnalité pour valider une adresse e-mail n'est pas "standard Java". Dans quelle mesure cela vous touche en tant que développeur? dépend de la façon dont vous êtes paranoïaque.
D'autre part, le standard de Java mise en œuvre pourrait être moins efficace. Vous devez construire un
InternetAddress
et de les valider. En regardant JavaMail du code source, j'ai pu voir ceci:(Le
XXX
semble être une sorte de note, ou un "faire")OriginalL'auteur Isaac
Je viens de le tester, et apparemment, le rendement sur InternetAddress est sensiblement mieux ensuite à l'aide de EmailValidator
De sortie:
EmailValidator durée: 1195
InternetAdress durée: 67
Les résultats sont que EmailValidator a mis environ 20 fois plus longtemps:
user@localhost
est considéré comme valide.bla@bla
est considéré comme valide.someone@[10.10.1.5]
est également considéré comme valide. Je pense que vous voulez les traiter non valide. Donc, je pense que passer 20 fois plus longtemps est valeur.OriginalL'auteur shemerk