• [C#] Benutzung von Regulären Ausdrücken

    [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.



    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:


    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:


    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


    Prüfung der E-Mail Adresse


    Prüfung einer anderen E-Mail Adresse


    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 Gross
    Norwyn bedankt sich.