Leser: 2
![]() |
|< 1 2 3 >| | ![]() |
23 Einträge, 3 Seiten |
1 2 3 4
use/require Mail::RFC822::Address; if (&Mail::RFC822::Address::valid($email)) { print "ok\n"; }
QuoteDas Prüfen einer Internet-E-Mail-Adresse auf korrekte Sysntax ist ein Thema, das immer wieder auftritt. Leider ist das wegen der Komplexität des Standards alles andere als einfach. Im Prinzip ist es mit einem regulären Ausdruck sogar unmöglich, weil die Kommentare in Adressen beliebig tief verschachtelt sein dürfen. (O ja, E-Mail-Adressen können Kommentare enthalten: Texte in Klammern sind Kommentare.) Wenn wir das soweit einschränken, dass wir nur Kommentare erster Ordnung (also nur eine Verschachtelungstiefe - das gilt für alle Adressen, die mir je untergekommen sind) zulassen, dann sollte es auch mit einer Regex gehen. Versuchen wir's.
Trotz dieser Einschränkung ist das kein Projekt für zarte Gemüter - die Regex wird am Ende 4724 Zeichen lang sein! Zunächst würde man denken, dass etwas einfaches wie \w+\@[.\w]+ funktionieren müsste, aber das Problem ist viel komplizierter.
m/^([a-zA-z_0-9\-\.]+)(\@)([a-zA-z_0-9\-\.]+)(\.)(\w+)/
![]() |
|< 1 2 3 >| | ![]() |
23 Einträge, 3 Seiten |