Mail-Adressen auf Gültigkeit prüfen
11.11.2008 | | Tags: E-Mail | 2 Kommentare
Es ist immer mal wieder erforderlich, eingegebene Mail-Adressen auf ihre Gültigkeit hin zu prüfen. Am simpelsten lässt sich das mit regulären Ausdrücken handhaben. Der folgende Code gibt entsprechend True (Adressform korrekt) oder False (Adressform nicht korrekt) zurück:
if (ereg("^[_a-zA-Z0-9-]+
(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]
+\.([a-zA-Z0-9]{2,4})$",
$mailadresse))
Die Mail-Adresse kann am Anfang aus beliebigen Ziffern, Buchstaben und den Sonderzeichen “_” und “-” bestehen. Als Trennzeichen ist der “.” zulässig. Nach dem “@” muss ein Domainname aus ebenfalls beliebigen Ziffern, Buchstaben oder dem Bindestrich folgen. Nach dem “.” als Trennzeichen zur TLD muss nochmals eine Buchstabenfolge folgen.
2 Kommentare
Parkrocker am 11. Januar 2009
Zu 1) und 2):
Das war auch nicht beabsichtigt
Zu 3):
Irrelevant
Zu 4)
Und? Habe ich das irgendwo bestritten? Im Gegenteil habe ich noch ausdrücklich darauf hingewiesen, welche Zeichen möglich sind
Zum Rest:
Wer mal gucken möchte, wo der “Experte” abgeschrieben hat, nimmt diesen Link
http://www.google.de/search?hl=de&q=%22%23+Abc.example.com+character+%40+is+missing%22&btnG=Google-Suche&meta=


wingi am 11. Januar 2009
1. Keine Umlautdomain noch IP-Adresse möglich
2. keine Subdomain möglich
3. Haupt-Domains haben eine begrenzte Anzahl von Buchstaben
4. Im Benutzernamenn dürfen mehr Zeichen (! # $ % & ‘ * + – / = ? ^ _ ` { | } ~) als im Regex angegeben vorkommen
4. Immerhin richtig: Der Punkt im Localpart weder am Anfang noch am Ende …
Da mir noch mehr einfält, hier lieber ein paar Beispiele für korrekte Emails:
# abc@example.com
# Abc@example.com
# aBC@example.com
# abc.123@example.com
# 1234567890@example.com
# _______@example.com
# abc+mailbox/department=shipping@example.com
# !#$%&’*+-/=?^_`.{|}~@example.com (all of these characters are allowed)
# “abc@def”@example.com (anything goes inside quotation marks)
# “Fred \”quota\” Bloggs”@example.com
Und hier ein paar nicht korrekte:
# Abc.example.com (character @ is missing)
# Abc.@example.com (character dot(.) is last in local part)
# Abc..123@example.com (character dot(.) is double)
# A@b@c@example.com (only one @ is allowed outside quotations marks)
# ()[]\;:,@example.com
Viel Spaß nochhhh !