Inhalt
Vorwort
1 Wie .NET und ASP.NET funktionieren
2 Installation
3 Hinweise zu VB.NET
4 »Hallo, Welt!« – Ein ASP.NET-Crashkurs
5 Die Page-Klasse
6 HTML-Serversteuerelemente
7 Validierung von Anwendereingaben
8 Webserversteuerelemente
9 Webserversteuerelemente für die Darstellung von Listen
10 Webserversteuerelemente selbst erstellen
11 Der Status von Seiten, Sitzungen und Applikationen
12 ASP.NET und Datenbanken
13 »Wer darf was?« ASP.NET und Sicherheit
14 Webanwendungen erstellen und konfigurieren
15 Leistungssteigerung durch Caching
16 Web Services
A Anhang
Index
Download (ca 14,3 MB)
Buch bestellen (29,90 EUR)
Ihre Meinung?@
<< zurück | Galileo Computing / <openbook> / Einstieg in ASP.NET | vor >>
Einstieg in ASP.NET von Matthias Lohrer
| Kapitel 7 Validierung von Anwendereingaben
|  | 7.1 RequiredFieldValidator
|  |  | 7.1.1 Display-Attribut
|  |  | 7.1.2 InitialValue-Attribut
|  |  | 7.1.3 Die Fehlermeldung definieren
|  | 7.2 Das ValidationSummary-Steuerelement
|  | 7.3 Wie das Display-Attribut funktioniert
|  | 7.4 CompareValidator
|  |  | 7.4.1 Die Eingabe mit einem fixen Wert vergleichen
|  |  | 7.4.2 Zwei Eingabefelder miteinander vergleichen
|  |  | 7.4.3 Eine Typüberprüfung vornehmen
|  | 7.5 RangeValidator
|  | 7.6 RegularExpressionValidator
|  |  | 7.6.1 Reguläre Ausdrücke erstellen
|  |  | 7.6.2 Eingaben mit regulären Ausdrücken überprüfen
|  |  | 7.6.3 Konventionen für gültige Passwörter überprüfen
|  | 7.7 CustomValidator
|  |  | 7.7.1 Serverseitige Überprüfung
|  |  | 7.7.2 Eine clientseitige Überprüfung ergänzen
## 7.6 RegularExpressionValidator Die Überprüfung regulärer Ausdrücke galt bis vor einigen Jahren noch als Perl-Domäne. Andere Sprachen haben hier aber mittlerweile nachgezogen und auch ASP.NET bietet ein entsprechendes Validierungssteuerelement. Mit einem RegularExpressionValidator-Steuerelement können Sie eine Eingabe daraufhin überprüfen, ob die eingegebene Zeichenfolge einem bestimmten Schema entspricht. Mit Hilfe eines regulären Ausdrucks können Sie überprüfen,
| ob eine Zeichenkette nur erlaubte Zeichen enthält,
| ob bestimmte Zeichen oder Gruppen von Zeichen in der richtigen Reihenfolge auftreten,
| ob Zeichen in der richtigen Anzahl auftreten.
Ein typischer Anwendungsfall wäre die Überprüfung, ob eine Eingabe eine gültige E-Mail-Adresse darstellt.
Tipp Bevor Sie in ASP.NET einen regulären Ausdruck zur Eingabeüberprüfung verwenden, sollten Sie kurz darüber nachdenken, ob die anderen Validierungssteuerelemente die anstehende Überprüfung nicht vielleicht besser lösen können. In herkömmlichen Skriptsprachen stehen zur Überprüfung oft nur reguläre Ausdrücke zur Verfügung. In ASP.NET sollten Sie nicht den Fehler machen, mit Hilfe eines regulären Ausdrucks eine Überprüfung zu realisieren, die sich beispielsweise mit einem CompareValidator oder RangeValidator leichter lösen ließe.
Reguläre Ausdrücke bilden eine Welt für sich. Dieser Abschnitt stellt lediglich einige Grundlagen vor. Wer eine vollständige Referenz über alle Möglichkeiten der Verwendung regulärer Ausdrücke benötigt, sollte auf jeden Fall die .NET-Dokumentation zu Rate ziehen. Hier werden zahlreiche Sonderfälle erklärt, die einem bei der Arbeit mit regulären Ausdrücken das Leben schwer machen können. ### 7.6.1 Reguläre Ausdrücke erstellen Ein regulärer Ausdruck ist ein String, der das Muster beschreibt, nach dem ein anderer String aufgebaut ist. An einer E-Mail-Adresse wird im Folgenden beispielhaft dargestellt, wie Sie einen regulären Ausdruck aufbauen können. In umgangssprachlicher Formulierung lässt sich der prinzipielle Aufbau einer E-Mail-Adresse etwa so beschreiben:
| Am Anfang steht mindestens ein Zeichen für den Empfänger.
| Es folgt genau ein @-Zeichen.
| Es folgen mindestens zwei Zeichen für die Domain.
| Es folgt ein Punkt.
| Den Abschluss bilden mindestens zwei Zeichen.
Diese Beschreibung ist noch nicht sehr genau, soll für unsere Zwecke aber ausreichen. Sie verwendet verschiedene Typen von Charakterisierungen. #### Anker Die Wendung »Am Anfang« verankert einen String an einer bestimmten Position, nämlich ganz am Anfang. ASP.NET bietet zwei Anker. ^ markiert den Anfang des Strings. $ markiert das Ende des Strings. #### Quantifizierungen Die Wendung »mindestens zwei Zeichen« verwendet einen quantifizierenden Ausdruck. Für solche quantifizierenden Ausdrücke bietet ASP.NET eine ganze Reihe von Operatoren. Zunächst schreibt man das Zeichen beziehungsweise die Zeichengruppe hin und fügt den quantifizierenden Ausdruck an. Dabei bedeutet: ? gar nicht oder einmal, + einmal oder mehrmals, * gar nicht, einmal oder mehrmals, {n} genau n-mal, {n,} mindestens n-mal, {n,m} mindestens n-mal, höchstens m-mal. #### Zeichenklassen Innerhalb von E-Mail-Adressen sind keine Sonderzeichen wie die deutschen Umlaute erlaubt. Wenn also in der umgangssprachlichen Beschreibung von »einigen Zeichen« die Rede ist, dann ist hier eine so genannte Zeichenklasse gemeint. ASP.NET bietet folgende Möglichkeiten für die Definition von Zeichenklassen. . Entspricht allen Zeichen außer dem Zeilenumbruchzeichen \n [aum] Entweder ein a oder ein u oder ein m. Die erlaubten Zeichen werden also in eckigen Klammern aufgelistet. [^aum] Kein a und auch kein u und auch kein m. Nicht erlaubte Zeichen werden aufgelistet. [0-9a-fA-F] Eine Ziffer oder ein Buchstabe von a bis f, klein- oder großgeschrieben. Für einige häufig gebrauchte Zeichenklassen gibt es außerdem vordefinierte Kürzel: \w für ein beliebiges Wortzeichen (d. h. keine Satzzeichen, Leerzeichen etc.), \W für ein beliebiges Nichtwortzeichen, \s für ein Leerraumzeichen, \d für eine Dezimalziffer. Die .NET-Dokumentation bietet noch detailliertere Informationen zu den Zeichenklassen. Mit Hilfe dieser Werkzeuge lässt sich eine E-Mail-Adresse annäherungsweise in einen regulären Ausdruck fassen:
| Am Anfang steht mindestens ein Zeichen für den Empfänger. ^.+
| Es folgt genau ein @-Zeichen. ^.+@
| Es folgen einige Zeichen für die Domain. ^.+@.+
| Es folgt ein Punkt. ^.+@.+\.
| Den Abschluss bilden mindestens zwei Zeichen. ^.+@.+\..{2,}
Damit haben Sie einen regulären Ausdruck gebildet. Sobald in der umgangssprachlichen Beschreibung von »Zeichen« die Rede ist, verwendet dieser reguläre Ausdruck den Punkt als Zeichenklasse. Diese Zeichenklasse ist eigentlich zu umfassend, weil sie beispielsweise auch Sonderzeichen enthält. Andererseits hat das den Vorteil, dass Sie nicht versehentlich eine gültige E-Mail-Adresse als ungültig verwerfen, nur weil sie ein Zeichen enthält, das in der Zeichenklasse \w beispielsweise nicht enthalten ist, in E-Mail-Adressen aber erlaubt ist. Der Punkt, ein Bindestrich, ein Unterstrich und weitere Zeichen dürfen auch in E-Mail-Adressen vorkommen.
Achtung Anders gesagt: Dieser reguläre Ausdruck ist noch nicht optimal, weil auch eventuell ungültige E-Mail-Adressen durchrutschen lässt. Andererseits machen Sie mit diesem regulären Ausdruck nicht den wahrscheinlich schwerer wiegenden Fehler, eine gültige E-Mail-Adresse als ungültig zu beurteilen, weil das Schema zu eng ausgelegt ist. Der bislang gefundene reguläre Ausdruck bietet auf jeden Fall noch genügend Spielraum für Optimierungen.
Aber stimmt der Ausdruck auch? Um ihn zu testen, wenden Sie ihn in einem RegularExpression-Steuerelement an.
Operator | Beschreibung
--- | ---
\ | Escape-Zeichen. Wird verwendet, um Zeichen, die in regulären Ausdrücken eine besondere Bedeutung haben, zitieren zu können
(), (?:), (?=), [] | Klammern
*, +, ?, {n}, {n,}, {n,m} | Quantifizierer
^, $, \Meta-Zeichen, Zeichen | Anker und Sequenzen
| | Alternative
Tabelle 7.5 Vorrang der Operatoren in regulären Ausdrücken. Von oben nach unten abnehmender Vorrang ### 7.6.2 Eingaben mit regulären Ausdrücken überprüfen regular01.aspx erfragt vom Anwender eine E-Mail-Adresse und testet die Eingabe mit Hilfe des regulären Ausdrucks, den Sie erstellt haben. Abbildung 7.8 zeigt die Darstellung im Browser.
Attribut | Wert
--- | ---
id | Eindeutiger Bezeichner
ControlToValidate | id des zu überprüfenden Steuerelements
ValidationExpression | Regulärer Ausdruck
ErrorMessage | Fehlermeldung für das ValidationSummary-Steuerelement
Text | Fehlermeldung
Display | None | Static (Default) | Dynamic
EnableClientScript | true | false
ForeColor | Farbangabe
BackColor | Farbangabe
runat | Server
Tabelle 7.6 Attribute des RegularExpressionValidator-Steuerelements Hier klicken, um das Bild zu Vergrößern Abbildung 7.8 Mit einem regulären Ausdruck können Sie beispielsweise E-Mail-Adressen überprüfen.
    <!-- regular01.aspx -->
    <% @Page debug="true" %>
    <html><head>
    <title>RegularExpression-Validator</title>
    </head><body>
    <h3>RegularExpression-Validator</h3>
    <p>Bitte geben Sie eine E-Mail-Adresse ein:</p>
    <form runat="server">
    <input type="text" runat="server" id="txtEMail">
    <input type="submit" value=" OK ">
    <asp:RegularExpressionValidator runat="server"
         ControlToValidate="txtEMail"
         ValidationExpression="^.+@.+\..{2,}"
         Text="Bitte überprüfen Sie die E-Mail-Adresse." />
    </form></body></html>
Achtung Wer nicht nur eine ungefähre Überprüfung vornehmen, sondern ganze Arbeit leisten will, muss den Standard für die Gestaltung von E-Mail-Adressen komplett umsetzen. Das ist allerdings keine triviale Aufgabe, weil hier zahlreiche Ausnahmen möglich sind. Der momentan gültige Standard für das »Internet Message Format« ist definiert im RFC 2822, zu finden unter anderem hier: http://www.faqs.org/rfcs/rfc2822.html.
### 7.6.3 Konventionen für gültige Passwörter überprüfen Im Abschnitt 7.4.2, Zwei Eingabefelder miteinander vergleichen, wurde ein Beispiel entwickelt für ein Formular, das vom Anwender die doppelte Eingabe eines Passwortes verlangt. Dieses Beispiel soll jetzt noch um die Bedingungen ergänzt werden, dass das Passwort mindestens acht Zeichen lang sein soll und nur Ziffern oder Buchstaben enthalten darf. Außerdem sollen keine Sonderzeichen und Umlaute erlaubt sein. Den passenden regulären Ausdruck erstellen Sie, in dem Sie zunächst eine eigene Zeichenklasse mit den gültigen Zeichen erstellen und anschließend eine quantifizierende Beschreibung anhängen. Damit ergibt sich dieser Ausdruck: [0-9a-zA-Z]{8,} regular02.aspx enthält das komplette Formular. Das RegularExpressionValidator-Element wurde hinzugefügt und der Text der Fehlermeldung wurde ergänzt, wie es in Abbildung 7.9 zu sehen ist.
    <!-- regular02.aspx -->
    <% @Page debug="true" %>
    <html><head>
    <title>Passworteingabe</title>
    </head><body>
    <h3>Passworteingabe</h3>
    <p>Bitte geben Sie Ihr Passwort zweimal ein.
    Das Passwort muss mindestens 8 Zeichen lang sein und
    darf nur die Buchstaben von a bis z in Groß- oder
    Kleinschreibung und Ziffern enthalten.
    Umlaute und Sonderzeichen sind nicht erlaubt.</p>
    <form runat="server">
    Ihr Passwort:<br>
    <input type="password" id="pass1" runat="server"><br>
    Nochmal Ihr Passwort: <br>
    <input type="password" id="pass2" runat="server"><br>
    <input type="submit" value="  OK  " runat="server"><br>
    <br>
    <asp:RequiredFieldValidator runat="server"
         ControlToValidate="pass2" />
    <asp:CompareValidator runat="server"
         ControlToValidate="pass2"
         ControlToCompare="pass1"
         Operator="Equal" />
    <asp:RegularExpressionValidator runat="server"
         ControlToValidate="pass1"
         ValidationExpression="[0-9a-zA-Z]{8,}" />
    <asp:ValidationSummary runat="server"
         HeaderText="Bitte geben Sie zwei identische
                     Passwörter ein und beachten Sie die
                     Konventionen für Länge und erlaubte
                     Zeichen."
         ShowSummary="true" />
    </form></body></html>
Hier klicken, um das Bild zu Vergrößern Abbildung 7.9 Der Einsatz vier verschiedener Validierungssteuerelemente stellt eine korrekte Eingabe sicher.
<< zurück | <top> | vor >>
Zum Katalog
Einstieg in ASP.NET bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung

.NET-Bibliothek
| Einstieg in VB.NET
| VB.NET
| Einstieg in C#
| Visual C#
| VB.NET und Datenbanken

Empfehlung
| Einstieg in XML

Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

MyGalileo
Der Service für registrierte Leser: Info

Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de