tutorials.de-Buchverschenkaktion 08/2010
Thema geschlossen
  1. #1
    Benutzerbild von Konstantin Gross
    Konstantin Gross Konstantin Gross ist offline Mitglied Platin Konstantin Gross ist ein sehr geschätzer Mensch
    Registriert seit
    Sep 2003
    Ort
    Kassel (Hessen)
    Beiträge
    702
    [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

    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

    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

    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. ( Name:  Run.png
Hits: 5090
Größe:  363 Bytes )
    Klicke auf die Grafik für eine größere Ansicht

Name:	Anwendung.png
Hits:	517
Größe:	9,6 KB
ID:	29528
    Erste Ausführung unserer Anwendung

    [C#] Benutzung von Regulären Ausdrücken-anwendung_pruefung.png
    Prüfung der E-Mail Adresse

    [C#] Benutzung von Regulären Ausdrücken-anwendung_pruefung_fehlerhaft.png
    Prüfung einer anderen E-Mail Adresse

    [C#] Benutzung von Regulären Ausdrücken-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 Gross
    Geä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 -

  2. #2
    Benutzerbild von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant Christian Kusmanow sorgt für eine eindrucksvolle Atmosphäre
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.199
    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...

  3. #3
    Benutzerbild von Konstantin Gross
    Konstantin Gross Konstantin Gross ist offline Mitglied Platin Konstantin Gross ist ein sehr geschätzer Mensch
    Registriert seit
    Sep 2003
    Ort
    Kassel (Hessen)
    Beiträge
    702
    Hallo Christian,
    danke, die Tutorials ergänzen sich super.

Ähnliche Themen

  1. URL-Überprüfung mit regulären Ausdrücken
    Von Online-Skater im Forum PHP
    Antworten: 16
    Letzter Beitrag: 11.03.10, 10:38
  2. Text parsen mit regulären Ausdrücken
    Von notebook20000 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 04.04.07, 11:41
  3. Suche mit Regulären ausdrücken
    Von liquidbeats im Forum PHP
    Antworten: 6
    Letzter Beitrag: 03.07.06, 23:30
  4. Problem mit Regulären Ausdrücken
    Von forsterm im Forum .NET Windows Forms
    Antworten: 4
    Letzter Beitrag: 26.02.06, 00:59
  5. Variablen in Regulären Ausdrücken
    Von MRanderath im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 23.08.01, 18:19

Lesezeichen

Lesezeichen