E-Mail Adresse überprüfen

mgd-one

Erfahrenes Mitglied
Hallo zusammen,

kann mir bitte jemand sagen wie ich in C# einen String überprüfe ob die eingegebene E-Mail Adresse gültig ist (am besten mit Beispiel Code)

MfG mgd-one
 

Texaner

Erfahrenes Mitglied
moin,

das Zauberwort hier heißt : Reguläre Ausdrücke.

Code:
<asp:RegularExpressionValidator id="RegExSNDash" runat="server"
            ControlToValidate="DeinMailFeld"
            ValidationExpression=".*@.*\.(de?)$"
            ErrorMessage="Keine gültige e-Mail Adresse<br>"
            Display="Static">
 </asp:RegularExpressionValidator>


Das ist hier natürlich nur sehr einfach gemacht.
Arbeitest du mit VS.NET ?
Ich glaube da gibt es für solche sachen sogar schon fertige Ausdrücke.
 

Saber

Erfahrenes Mitglied
Na ja, ob ASP.NET ins C#.NET-Forum gehört weiss ich jetzt nicht so. :)

Also ich gehe jetzt einfach mal davon aus, dass das ganze ohne ASP.NET zu lösen ist. Aber es stimmt, man benötigt reguläre Ausdrücke. Dazu gibts in .NET folgenden Namespace: System.Text.RegularExpressions.

Man muss meines Wissens nach die statische Methode IsMatch der Klasse Regex im oben genannten Namespace benutzen, um anhand eines regulären Ausdrucks die E-Mail-Adresse zu überprüfen:
Code:
System.Text.RegularExpressions.Regex.IsMatch("name@meinedomain.de", "^[\w\.\-]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]{1,})*(\.[a-zA-Z]{2,3}){1,2}$");

Die Methode sollte true oder false rückliefern, je nach dem ob die E-Mail-Adresse gültig ist oder nicht.

Ich übernehme allerdings keinerlei Haftung für den regulären Ausdruck da oben. Der war improvisiert ... kann man also noch verbessern. :)

Weitere recht gute Infos zum Aufbau eines regulären Ausdrucks findet man in der MSDN oder einfach mal ein bißchen googlen. ;)
 
Zuletzt bearbeitet:

Texaner

Erfahrenes Mitglied
@ Saber

ok, das war ASP.NET.
Aber um eine eingegebene Email zu checken
würde ich es immer mit dem 'asp:RegularExpressionValidator' machen.

Vereinfacht doch die Sache nur.
Oder sehe ich da irgendwas falsch
 

mgd-one

Erfahrenes Mitglied
Danke @Saber das ist genau das was ich meine, da ich im mom als Schulprojekt einen E-Mail Client schreibe. Dafür kann ich leider kein ASP.net gebrauchen ;)

MfG mgd-one
 

Saber

Erfahrenes Mitglied
Keine Ursache @ mgd-one
:)


Original geschrieben von Texaner
@ Saber

ok, das war ASP.NET.
Aber um eine eingegebene Email zu checken
würde ich es immer mit dem 'asp:RegularExpressionValidator' machen.

Vereinfacht doch die Sache nur.
Oder sehe ich da irgendwas falsch

Ja, da siehst Du etwas falsch, denn unter C#.NET kann man ASP.NET-Aufrufe nur verwenden, wenn es sich dabei auch wirklich um ASP.NET-Projekte handelt. In Windows-Forms-Projekten funktioniert das nicht.

Der Unterschied zu ASP.NET liegt darin, dass dazu der Quelltext als Skriptdatei auf einem IIS-Server liegen muss und auf "normalen" Clients nicht ausführungsfähig ist . Es läuft nur in einem Browser bei Zugriff auf einen IIS-Server. Das selbe Prinzip wie bei PHP und JSP, falls Dir das mehr sagt. :)

Vereinfacht soll das heissen, dass man unter ASP.NET die Sprache C#.NET verwenden kann, aber unter reinen C#.NET-Projekten nicht immer ASP.NET-spezielle Aufrufe. :)

Also, nächstes Mal ASP.NET-Forum verwenden.
 

mgd-one

Erfahrenes Mitglied
Für alle die das selbe Problem haben: System.Text.RegularExpressions.Regex.IsMatch("name@meinedomain.de", "^[\w\.\-]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]{1,})*(\.[a-zA-Z]{2,3}){1,2}$"); ist nicht ganz richtig es müssen vor die \ noch einer vorgesetzt werden sprich: System.Text.RegularExpressions.Regex.IsMatch("name@meinedomain.de", "^[\\w\\.\\-]+@[a-zA-Z0-9\\-]+(\\.[a-zA-Z0-9\\-]{1,})*(\\.[a-zA-Z]{2,3}){1,2}$");

so ist es richtig ;)

MfG mgd-one