Comment savoir si une chaîne aléatoire est une adresse e-mail ou quelque chose d'autre

Je ne pense pas que cette question a été posée avant... je n'arrive pas à trouver quelque chose à cette exigence.

Fond

Il y a une API qui retourne l'ID de personnes. En général, l'ID doit être considéré comme sensible à la casse... mais si l'ID est en fait leur adresse e-mail... et vous parlez à un de moins que stellaire de mise en œuvre de cette API qui renvoie un cas mixte version de leur adresse e-mail, il ya beaucoup de plaisir à avoir...

Si vous parlez à une mise en œuvre... il vous donne l'URL comme des choses que l'IDENTIFIANT, par exemple

  • http://foo.bar.com/blahblahblah

Vous pourrait être de parler à l'autre de la mise en œuvre... qui vous donne en retour une certaine non-évidente ID, par exemple

  • as€jlhdésdj678hjghas7t7qhjdhg£

Vous pourrait être de parler à une belle application qui vous donne en retour une belle minuscules adresse e-mail:

Ou vous pourriez être en parler à moins que stellaire de mise en œuvre qui renvoie exactement l'équivalent ID

RFC 2821 indique que seule la boîte aux lettres est sensible à la casse, mais que l'exploitation de la sensibilité à la casse va provoquer une série d'inter-op de questions...

Ce que je veux faire est d'identifier les chaînes qui sont des mails et de la force du domaine de minuscules. L'identification de l'URI comme des cordes est plus facile que le schéma est soit http ou https et j'ai juste besoin de minuscules le nom de domaine qui est beaucoup plus facile à analyser.

Question

Si une chaîne de caractères fournie par un service externe, est-il un test que je peux utiliser, qui permettra de déterminer si la chaîne est une adresse e-mail afin que je puisse vigueur le nom de domaine en minuscules?

Il est acceptable pour un petit % des adresses e-mail manquer et de ne pas obtenir le nom de domaine mis en minuscule. (Faux négatifs autorisé)

Il n'est pas acceptable pour forcer une partie d'une chaîne en minuscules, si elle n'est pas la partie domaine de l'adresse e-mail. (Les faux positifs ne sont pas permis)

 mise à Jour

Noter que cette question est subtilement différent de cette et cette que dans le contexte de ces deux questions que vous savons déjà que la chaîne est censé être une adresse e-mail.

Dans le contexte de cette question, nous ne savons pas si la chaîne est une adresse e-mail ou quelque chose d'autre... ce qui rend cette question est-elle différente

  • mis à part la vérification que le domaine existe et a un serveur de messagerie dans son entrée DNS, pourquoi vous ne pouvez utiliser une expression régulière pour vérifier la syntaxe-juridique adresses e-mail? beaucoup de ceux qui volent autour.
  • double possible de Vérifier e-mail en Java
  • Et puis il y a aussi Quel est le meilleur Java adresse email de validation de la méthode?
  • Eh bien, je ne veux pas d'invoquer une requête DNS sur le chemin de code où ce code est évalué car ce serait introduire les questions... en particulier le serveur que ce code est en cours d'exécution peut ne pas être en mesure de valider le nom de domaine qui est dans le retour de l'ID. Donc la vérification des entrées DNS est
  • le dns-vérification a été une étape supplémentaire, mais en dehors de regexp je ne vois vraiment aucun autre moyen de sortir de cette
  • La spécification pour les adresses e-mail spécifiées par RFC2821 est fou. Mais à l'époque, les choses étaient différentes, - vous au document rfc821 dû tenir compte, et sont essentiellement constituées de, toutes sortes de propriétaires adresses e-mail. Sinon rallier les joueurs de la journée, aurait été impossible. Cela étant dit, les adresses de courriel sont vraiment trop souple. Le plus fou (mais valide) les attributs sont rarement utilisés. En savoir plus sur le cerveau-popping de la complexité de la tâche ici: en.wikipedia.org/wiki/Email
  • le moyen d'en sortir c'est de code à RFC2821. Ou, l'OP peut décider qu'il n'reconnaître la validité d'un sous-ensemble de l'adresse email formats. Un bon sens de la définition serait probablement 99% de précision.