Email-Adresse schnell überprüfen
Email-Adressen zu validieren kann anstrengend werden, da eine Menge an Überprüfungen notwendig werden:
- Ist ein @-Symbol vorhanden?
- Befinden sich Zeichen vor dem @-Symbol?
- Wenn ja, welche und wieviele?
- Sind die Zeichen gültig?
- Befinden sich Zeichen nach dem @Symbol?
- Wenn ja, welche und wieviele?
- Sind die Zeichen gültig?
- Ist eine TopLevel-Domain angegebenen?
Erst, wenn all diese Fragen mit “Ja” beantwortet werden können, kann die Email-Adresse als syntaktisch korrekt gelten. Eine Aussage, ob die Adresse tatsächlich existiert, ist damit allerdings nicht getroffen.
Wenn versucht wird, eine derartige Prüfung in gewöhnlichem Code auszudrücken, kommt man schnell an den Punkt, an dem es aufhört lustig zu werden: So cirka zehn bis zwanzig Zeilen Code sind mindestens nötig. Das ist anstrengend und – und das ist das wirklich fiese – völlig unnötig!
Die Lösung für dieses Problem heißt “Regulärer Ausdruck”, oder kurz: Regex. Mit Hilfe eines derartigen Ausdrucks können Texte darauf überprüft werden, ob sie syntaktisch korrekt sind. Eine Liste vieler regulärer Ausdrücke befindet sich in der RegexLib (http://www.regexlib.com). Verwendet werden diese Ausdrücke über die Klasse System.Text.RegularExpressions.Regex, die über diverse statische und nicht-statische Methoden verfügt.
Für die Validierung einer Email-Adresse reicht es aus, sich in der RegexLib einen geeigneten Ausdruck zu besorgen (eine Suche nach “email” sollte schon genug Ergebnisse liefern) und diesen Ausdruck zusammen mit der zu überprüfenden Email-Adresse an die statische Methode IsMatch() der Regex-Klasse zu übergeben:
using System.Text.RegularExpressions;
// …
// Email-Adresse überprüfen
if(Regex.IsMatch(email,
@”^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|”
+ “([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|”
+ “(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$”)) {
// Email ist gültig
} else {
// Email ist ungültig
}
In VB.NET sieht das so aus:
Imports System.Text.RegularExpressions
‘ ..
‘ Email-Adresse überprüfen
If Regex.IsMatch(email, _
“^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|” & _
“([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))” & _
”*\w{1,63}\.[a-zA-Z]{2,6}$”) Then
‘ Email gültig
Else
‘ Email ungültig
End If
Im Web-Umfeld muss man nicht direkt mit der Regex-Klasse arbeiten. Hier gibt es das RegularExpressionValidator-Control, dessen Eigenschaft ValidationExpression den regulären Ausdruck aufnimmt:
Im Code kann dann per
Page.IsValid
überprüft werden, ob die Überprüfungen der Validatoren erfolgreich waren.
Welche Variante auch immer genommen wird: Mit Hilfe eines regulären Ausdrucks wird die Überprüfung einer Email-Adresse deutlich leichter und performanter, als ohne. Eines jedoch ist zu bedenken: Eine Überprüfung, ob der Server erreichbar und die Email-Adresse gültig ist (also auf dem Server existiert), kann so nicht vorgenommen werden. Und Umlaute sind in obigem regulären Ausdruck auch nicht vorgesehen - aber das könnte man ja fixen.
Comments(1)