-
09.04.07 19:19 #1
[C#] Benutzung von Regulären Ausdrücken
Inhalt:
1. Inhalt
2. Einleitung
3. Umsetzung
1. Inhalt
Hallo,
ich begrüße euch recht herzlich zu diesem Tutorial, was euch die Benutzung von Regulären Ausdrücken in C# näher bringt.
2. Einleitung
Wenn ihr jetzt ein Tutorial von den Grundlagen von Regulären Ausdrücken erwartet, muss ich euch enttäuschen, denn dieses Tutorial zeigt euch nur die Benutzung von Regex (Regular Expressions) und nicht seine Syntax. Erfahrungen in der Erstellung von Regulären Ausdrücken wären also nicht verkehrt.
Um dies zu bewerkstelligen werden wir eine kleine Windows Anwendung programmieren, die prüft, ob das Format einer E-Mail korrekt ist. Um dieses Tutorial durcharbeiten zu können, benötigt ihr mindestens Visual C# 2005 (Express) und gute Kenntnisse über Reguläre Ausdrücke.
Genug um den heißen Brei geredet, fangen wir endlich an. Wir erstellen uns zuerst ein neues Windows Projekt, das wir „E-Mail Verifizierung“ nennen.
![[C#] Benutzung von Regulären Ausdrücken-projekt_erstellen.jpg](http://www.tutorials.de/attachments/net-tutorials/29533d1281368029t-projekt_erstellen.jpg)
3. Umsetzung
Nun wechseln wir in den Quellcode von Form1.cs und fügen „using System.Text.RegularExpressions;“ ein. Widmen wir uns nun etwas der Gestaltung unserer Anwendung. Diese besteht nur aus zwei Label-Objekten und einem Textbox-Objekt. Wobei ein Label uns darüber informiert, wo wir unsere E-Mail Adresse eingeben sollen, und eins, das uns über die Gültigkeit der E-Mail Adresse informiert und entsprechend seine Farbe ändert. Was die Textbox macht, dürfte in diesem Fall klar sein
.
Hier ein Screenshot von unserem großartigen Programm, das im Augenblick absolut nichts macht:
![[C#] Benutzung von Regulären Ausdrücken-anwendung.png](http://www.tutorials.de/attachments/net-tutorials/29528d1281368022t-anwendung.png)
Die Prüfung wird nicht etwa durch den Benutzer anhand eines Buttons ausgelöst, sondern bei der Änderung des Textes (textBox1_TextChanged).
Gehen wir zum wichtigsten Teil des Tutorial über, dem Quellcode. Wir öffnen den Quellcode der Form1.cs und fügen folgenden Code hinzu:
Code csharp:1
Regex Email = new Regex("^[a-zA-Z0-9_.-]+@{1}[a-zA-Z0-9_.-]{2,}\\.[a-zA-Z]{2,4}$");
Dieser Instanzcode des Regex Objektes wird benutzt um unsere E-Mail prüfen zu können.
Achtung: Für die, die trotzdem das Tutorial lesen, aber von Regex keine Ahnung haben, denen erkläre ich, was die lange Kette zu bedeuten hat.
Code :1 2 3 4 5
[COLOR="DarkRed"]^[a-zA-Z0-9_.-]+[/COLOR] Bedeutet, dass die E-Mail unbedingt wenigstens mit einem Buchstaben (Großbuchstabe oder kleiner Buchstabe) oder einer Zahl beginnen muss oder einem der folgenden Charaktere „_“, „.“, „-“ ([COLOR="darkred"]bill[/COLOR]@microsoft.com) [COLOR="DarkRed"]@{1}[/COLOR] Bedeutet, dass die Kette danach nur einen Charakter enthalten muss „@“ (bill[COLOR="darkred"]@[/COLOR]microsoft.com) [COLOR="darkred"][a-zA-Z0-9_.-]{2,}[/COLOR] Bedeutet, dass die Kette wenigstens zwei Charaktere besitzen muss (bill@[COLOR="darkred"]microsoft[/COLOR].com) [COLOR="DarkRed"]\\.[/COLOR] Bedeutet, dass die Kette einen Punkt zwischen microsoft und der Endung enthalten muss (bill@microsoft[COLOR="darkred"].[/COLOR]com) [COLOR="darkred"][a-zA-Z]{2,4}$[/COLOR] Bedeutet, dass die Endung zwischen 2 und 4 Charaktere besitzen muss (bill@microsoft.[COLOR="darkred"]com[/COLOR])
Kommen wir nun zu dem spannendsten Teil des Tutorials, der Erstellung der Methode „textBox1_TextChanged“. Dazu klicken wir im Designer auf die Textbox und im Eigenschaftsfenster auf Ereignisse. Dazu scrollen wir runter bis zum Text „TextChanged“, machen einen Doppelklick hinein und sehen nun folgendes Ergebnis:
![[C#] Benutzung von Regulären Ausdrücken-eigenschaften.png](http://www.tutorials.de/attachments/net-tutorials/29532d1281368029t-eigenschaften.png)
In der nun erstellten Methode tragen wir folgenden Code ein:
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
private void textBox1_TextChanged(object sender, EventArgs e) { try { if (textBox1.Text != "") { if (Email.IsMatch(textBox1.Text.ToString())) { label2.ForeColor = System.Drawing.Color.Green; label2.Text = "Die eingegebene E-Mail Adresse ist richtig!"; } else { label2.ForeColor = System.Drawing.Color.Red; label2.Text = "Die eingegebene E-Mail Adresse ist nicht richtig!"; } } else { label2.ForeColor = System.Drawing.Color.Blue; label2.Text = "Geben Sie bitte eine E-Mail Adresse ein!"; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
Wie wir sehen, besteht der Code aus zwei zusammen gesetzten Blöcken try { … } catch(Expection ex) { … } und if (Bedingung) { … } else { … }. Man sollte sich angewöhnen try und catch Blöcke überall in seinem Code zu benutzen um unschöne Fehlermeldungen abzufangen, die sonst der Benutzer zu sehen bekommt und die Anwendung zum Absturz bringen könnte. Nun erkläre ich kurz was der Code alles macht.
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
if (textBox1.Text != "") //Diese Zeile prüft, ob die Textbox nicht leer ist if (Email.IsMatch(textBox1.Text.ToString())) /* Diese Zeile prüft, ob die E-Mail das richtige Format hat */ label2.ForeColor = System.Drawing.Color.Green; label2.Text = "Die eingegebene E-Mail Adresse ist richtig!"; /* Diese zwei Codezeilen werden ausgeführt, wenn das Format der E-Mail korrekt ist. Die erste ändert die Farbe des label2 in Grün, die zweite wechselt den Text vom label2 in „Die eingegebene E-Mail Adresse ist richtig!“ */ label2.ForeColor = System.Drawing.Color.Red; label2.Text = "Die eingegebene E-Mail Adresse ist nicht richtig!"; /* Diese zwei Codezeilen werden ausgeführt, wenn das Format der E-Mail nicht korrekt ist. Die erste ändert die Farbe vom label2 in Rot, die zweite ändert den Text vom label2 in „Die eingegebene E-Mail Adresse ist nicht richtig!“ */ label2.ForeColor = System.Drawing.Color.Blue; label2.Text = "Geben Sie bitte eine E-Mail Adresse ein!"; /* Diese zwei Codezeilen werden ausgeführt, wenn textBox1 leer ist. Die erste ändert die Farbe vom label2 in Blau, die zweite ändert den Text vom label2 in „Geben Sie bitte eine E-Mail Adresse ein!“ */ catch (Exception ex) { MessageBox.Show(ex.Message); } /* Diese Zeilen prüfen, ob es keine Fehler zum Zeitpunkt der Ausführung gab. Gegebenfalls wird der Fehler abgefangen. */
Nun können wir unsere Anwendung kompilieren und starten. (
)

Erste Ausführung unserer Anwendung
![[C#] Benutzung von Regulären Ausdrücken-anwendung_pruefung.png](http://www.tutorials.de/attachments/net-tutorials/29529d1281368029t-anwendung_pruefung.png)
Prüfung der E-Mail Adresse
![[C#] Benutzung von Regulären Ausdrücken-anwendung_pruefung_fehlerhaft.png](http://www.tutorials.de/attachments/net-tutorials/29531d1281368029t-anwendung_pruefung_fehlerhaft.png)
Prüfung einer anderen E-Mail Adresse
![[C#] Benutzung von Regulären Ausdrücken-anwendung_pruefung_eingabe.png](http://www.tutorials.de/attachments/net-tutorials/29530d1281368029t-anwendung_pruefung_eingabe.png)
Hinweis für die Eingabe einer E-Mail Adresse
Wie euch bestimmt aufgefallen ist, funktioniert unsere Anwendung bereits und sieht schon nicht schlecht aus
, aber einen Fehler hat sie noch: beim Start der Anwendung erscheint der Text „Zustand“ und nicht „Geben Sie bitte eine E-Mail Adresse ein!“
Es bieten sich jetzt zwei Lösungen an:
- Indem wir das label2 direkt im Designer ändern
- Indem wir den Text vom label2 direkt beim Start ändern
Ich werde die zweite Lösung wählen, da sie für mich am saubersten ist. Im Designer machen wir einen Doppelklick auf die Form um eine Form1_Load-Methode zu erstellen:
Code csharp:1 2 3 4 5 6 7
private void Form1_Load(object sender, EventArgs e) { label2.ForeColor = System.Drawing.Color.Blue; label2.Text = "Geben Sie bitte eine E-Mail Adresse ein!"; } /* Diese zwei Codezeilen werden ausgeführt, wenn textBox1 leer ist. Die erste ändert die Farbe vom label2 in Blau, die zweite ändert den Text vom label2 in „Geben Sie bitte eine E-Mail Adresse ein!“ */
Nun können wir die Anwendung erneut ausführen und stellen fest, das alles funktioniert. Ich hoffe, dass dieses Tutorial euch neue Kenntnisse und Erfahrungen mit C# und Regulären Ausdrücken gebracht hat. Und das es Lust macht, eigene Anwendungen mit Regulären Ausdrücken zu erstellen
Das Projekt könnt ihr euch hier als Visual Studio 2005 Projekt runterladen.
Copyright @ 2007 Konstantin GrossGeändert von Konstantin Gross (09.04.07 um 19:37 Uhr)
Internetseite:
http://www.texturenland.de
Blog:
http://blog.texturenland.de
Codesnippets:
.NET-Snippets
- Sollte ich bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen -
-
12.04.07 09:29 #2
Hallo Konstantin!
Perfekt dazu passt das The 30 Minute Regex Tutorial von The Code Project.
MfG,
cosmo
Wer sein Problem definiert, hat es schon halb gelöst!
----------------------------------------------------------------------------------------------------------------
Blog | GeekDom | Emerge Desktop
----------------------------------------------------------------------------------------------------
The Code Project! - C# Programming
Top five things Linux can learn from Microsoft
Projekte
--------------------------------------
Regeln + Netiquette
-----------------------------------------------------------------------------------------------------------------------------
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
12.04.07 11:33 #3
Hallo Christian,
danke, die Tutorials ergänzen sich super.
Ähnliche Themen
-
URL-Überprüfung mit regulären Ausdrücken
Von Online-Skater im Forum PHPAntworten: 16Letzter Beitrag: 11.03.10, 10:38 -
Text parsen mit regulären Ausdrücken
Von notebook20000 im Forum PHPAntworten: 2Letzter Beitrag: 04.04.07, 11:41 -
Suche mit Regulären ausdrücken
Von liquidbeats im Forum PHPAntworten: 6Letzter Beitrag: 03.07.06, 23:30 -
Problem mit Regulären Ausdrücken
Von forsterm im Forum .NET Windows FormsAntworten: 4Letzter Beitrag: 26.02.06, 00:59 -
Variablen in Regulären Ausdrücken
Von MRanderath im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 23.08.01, 18:19



Login





Lesezeichen