Thread Regex für E-Mail: die soundsovielte (21 answers)
Opened by eisbeer at 2003-09-09 21:28

Relais
 2003-09-09 20:20
#38445 #38445
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die Aufgabe

Einen String anschaun, und feststellen, ob der genügend nach E-Mail-Adresse aussieht, oder nicht.

Der User-Teil darf vermutlich alles mögliche enthalten? In diesem Fall darf er vor allem keine Whitespace und keine Klammerungszeichen enthalten ({[<>]}), aber wie üblich ist's für die Aufgabe nicht so supergenau spezifiziert. Da bin ich etwas ängstlich und hau lieber um mich...

Der Domainteil darf A-Z und 0-9 und - und . beinhalten und endet nach dem letzten . auf mindestens zwei A-Z.

Mein Ansatz:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
 $email =~ m/
^ # Vom Anfang
[\w\.\+-]+ # mindestens ein Buchstabe, Zahl, . - + _
\@ # das @-Zeichen
[a-zA-Z0-9\.-]* # keine oder beliebig viele Buchstaben, Zahlen, . -
[a-zA-Z0-9] # genau einen Buchstaben oder eine Zahl.
[a-zA-Z0-9\.-]* # keine oder beliebig viele Buchstaben, Zahlen, . -
\. # ein Punkt
[a-zA-Z]{2,} # zwei oder mehr Buchstaben
$ # bis zum Ende
/x and print "OK\n";


Krumme Adressen wie "+@1.org" kommen also an. Das gilt als korrekt. Insbesondere sollen Adressen wie
"<korrektes@example.com>" und
"korrekt(wirklich )@example(korrektes ).(Beispiel)com" aber beabsichtig abgelehnt werden, auch wenn RFCs und im ersten Fall wohl auch der gesunde Menschenverstand sie für korrekte E-Mail-Adressen hält.

Keinesfalls durchschlüpfen darf sowas:
"< -force -exec rm -rf />/dev/null@example.com" bzw.
"< -force -exec rm -rf />/dev/null@example.com<>" bzw.
'<"<>" -force -exec rm -rf />/dev/null@example.com'
und daher auch die ungewöhnlich krankhafte Aufgabenstellung.

Hab ich auhc nix übersehen? Danke für die Adleraugen! 8)
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming

View full thread Regex für E-Mail: die soundsovielte