Hab mal rumprobiert und Folgendes ist dabei rausgekommen:
Code: Alles auswählen
import re
mail = "rogal@yahoo.de"
mailregex = '^[a-z|0-9][a-z|0-9|_|\-|\.]*@[a-z|0-9][a-z|0-9|\-]*(\.[a-z|0-9][a-z|0-9|\-]*)+$'
mailcheck = re.compile(mailregex, re.IGNORECASE)
if mailcheck.search(mail):
print "eingabe ok"
Zerlegen wir das mal:
^ Stringanfang, davor kann nichts sein, also auch keine unsinnigen Zeichen
[a-z|0-9] am Anfang muss ein alphanumerisches Zeichen kommen
[a-z|0-9|_|\-|\.]* dann beliebig viele alphanumerisches Zeichen oder - oder _ oder punkt auch beliebig viele
@ und jetzt erst das @
[a-z|0-9] gefolgt von einem alphanumerischen Zeichen
[a-z|0-9|\-]* danach beliebig viele alphanumerische Zeichen oder Minus, auch keinmal
(\.[a-z|0-9][a-z|0-9|\-]*)+ hier kommt jetzt ein oder mehreremale (wegen Subdomains)
ein Punkt gefolgt von einem alphanumerischen Zeichen und beliebig vielen (auch keinem) alphanumerischen Zeichen oder Minus
$ Ende des Strings, jetzt ist Schluss, dahinter darf nichts mehr kommen sonst ists keine gültige Emailadresse.
Der zusätzliche Parameter re.IGNORECASE lässt Grosskleinschreibung ignorieren, so braucht man nicht überall bei [a-z], [a-z|A-Z] schreiben.
So das müsste jetzt alle derzeit gültigen Emailadressen erkennen und unsinnige Eingaben zurückweisen.
Gruß
Dookie