email check via regexp

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • email check via regexp

    Hallo zusammen,


    ich überprüfe einige Mailadressen via RegExp auf ihre Richtigkeit.
    Eigentlich bin ich damit zufrieden gewesen:

    Quellcode

    1. Boolean mail = emailString.matches("^[\\w\\.=-]+@[\\w\\.-]+\\.[\\w]{2,4}$");


    So, das Problem dabei ist, dass die (dann hoffentlich) korrekten Daten in eine andere Applikation gespeist werden, welche es leider scheinbar etwas genauer nimmt, als meine Abfrage. Die Adresse lag in diesem Format vor: name@name.or. Wie man sieht, fehlt hier einfach nur ein Buchstabe der Domain.
    Meine Abfrage lässt sie korrekt durch (da ja zw. 2-4 Zeichen), aber die Zielapplikation mekert.
    Daher wollte ich am Ende einfach auf eine Hand voll Domain checken, aber irgendwie kann ich sie nicht richtig verknüpfen:

    Java-Quellcode

    1. Boolean mail = emailString.matches("^[\\w\\.=-]+@[\\w\\.-]+\\.[\\w][de]$");

    jetzt sind alle *.de Domains korrekt, aber ich würde natürlich auch gerne org, com, eu it, usw durchlassen.
    Wie kann ich also bspw. "org" mit validieren?
    Den Rest würde ich einfach per Hand einfügen.

    Danke
  • Ich kenne mich nicht wirklich mit den regex Eigenarten und Syntax von Java aus, aber ich könnte mir vorstellen, dass folgendes vielleicht funktionieren könnte:

    Quellcode

    1. Boolean mail = emailString.matches("^[\\w\\.=-]+@[\\w\\.-]+\\.[\\w][de|org]$");
    Open Source --> Programmieren aus Leidenschaft :!:

    Ich stehe weder für privaten Support per PM noch über einen IM zur Verfügung. Danke.
  • Der Regexp erscheint mir komisch. Du lässt ALLE zweistelligen TLDs zu solange sie groß geschrieben sind :?: Damit wär name@name.de falsch aber name@name.OR völlig in Ordnung, andersherum gilt es für deine Sonderadressen, du solltest also midenstens CASE_INSENSITIVE bzw /i mitgeben. Dann hast du allerdings dein Ursprungsproblem nicht gelöst. Wenn man es genau nimmt, geht es auch nicht sauber zu lösen. Entweder du nimmst eine Liste gültiger TLDs die mit nerviger regelmäßig gepflegt werden muss (spreche aus eigener Erfahrung, falls du dich dafür entscheidest: lies diese von externer .txt ein) oder du musst damit leben, dass Falschangaben akzeptiert werden. Begründet ist das Problem darin dass bei der Vergebung von TLDs keine mathematische Regelmäßigkeit existieren, demnach auch kein universell berechenbares Muster existiert. Der einzig wirklich sauberer Weg wäre natürlich das abfragen eines DNS nach der TLD, setzt aber Internetverbindung voraus, außerdem muss der DNS-Server konfiguriert werden.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • ja, richtig.
    ich hab das ganze auch noch mit [a-z] verknüpft.
    alternativ kann ich den String auch erstmal auf downcase setzen.


    Mein Problem ist hier leider, dass ich die Mailadresse dann an ein externes Tool weitergebe, welches nicht mir gehört. Somit muss ich das leider etwas umständlich machen...

    Danke