====== Mustervergleich mit Regulären Ausdrücken ======
\\ Um bei Eingaben von Werten oder Texten eine Gültigkeitsprüfung durchzuführen, können "[[http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck|Reguläre Ausdrücke]]" verwendet werden, die das Muster, dem eine zulässige Eingabe entsprechen muss, abstarkt beschreiben. Mit regulären Ausdrücken und den in VBScript und JScript für deren Verarbeitung verfügbaren Objekte und Methoden können auch Textteile gesucht oder ersetzt werden. Einzelheiten finden sich in der [[/Hilfe%20zu%20JS%20und%20VBS#Script-Hilfe|Microsoft Script-Hilfe]]. Hilfreich für den Einstieg ist z. B. auch [[http://www.regenechsen.de/phpwcms/index.php?regex_allg|dieser Kurs]] oder [[http://www.danielfett.de/internet-und-opensource,artikel,regulaere-ausdruecke|dieses Tutorial]].\\ //Literaturtipp:// „[[http://www.oreilly.de/catalog/regexcbger/|Reguläre Ausdrücke Kochbuch]]" von Jan Goyvaerts & Steven Levithan, 2010, O’Reilly Verlag, ISBN 978-3-89721-957-1.\\ \\
==== einige Beispiele für Musterdefinitionen: ====
' Bsp.: Suchmuster für die Eingabe von Länge und Breite eines Bildes. wobei jeder Wert zwei- oder dreistellig sein muss.
' Die beiden Werte müssen durch ein "x" getrennt werden.
Suchmuster = "^\d{2,3}x\d{2,3}$"
' Bsp.: Zeichen, die in Datei- und Ordnernnamen nicht zulässig sind -> :"<>*/?\|
' Man beachte die Maskierung per \ von *?\ und die Codierung des ". Das Pipezeichen | steht für Alternativen.
Suchmuster = ":|""|<|>|\*|/|\?|\\|\|"
' Bsp.: Prüfung einer Datumseingabe, die dem Muster TT.MM.JJ oder TT.MM.JJJJ entsprechen soll.
' Nur das 20. und 21. Jahrhundert ist zulässig.
Suchmuster = "^\d{1,2}\.\d{1,2}\.(\d{2}|(19|20)\d{2})$"
' Bsp.: Nur die Eingabe der Zahlen 5 - 12 ist zulässig.
Suchmuster = "^[5-9]|10|11|12$"
' Bsp.: Eingabe beliebig vieler Ziffer, leere Eingabe ist nicht erlaubt.
Suchmuster = "^[0-9]+$"
' Bsp.: Eingabe eines Seitenverhältnisses nach dem Muster Zahl/Zahl oder Zahl:Zahl
Suchmuster = "^[0-9]+[/:][0-9]+$"
' ... zusätzlich werden Nullwerte vermieden und Leerzeichen vor und nach dem Trennzeichen zugelassen
Suchmuster = "^[1-9]+[0-9]*\s*[/:]\s*[1-9]+[0-9]*$"
==== Gültigkeitsprüfung ====
**VBScript**
Suchmuster = "^\d{2,3}x\d{2,3}$" ' s.o. erstes Bsp.
Eingabe = InputBox ("Text eingeben")
If SearchRegAusdr (Eingabe, Suchmuster, False) = True Then
MsgBox "Eingabe ist Korrekt"
End If
Function SearchRegAusdr(Zeichenfolge, Muster, GrossKleinBeachten)
' Vergleich einer Zeichenfolge mit einem Suchmuster, bei Übereinstimmung
' wird True zurückgegeben, sonst False
Dim regAusdr
Set regAusdr = New RegExp
regAusdr.Pattern = Muster
regAusdr.IgnoreCase = GrossKleinBeachten ' Berücksichtigung der Groß-/Kleinschreibung
regAusdr.Global = True ' legt globales Anwenden fest
If regAusdr.Test(Zeichenfolge) then
SearchRegAusdr = True
Else
SearchRegAusdr = False
End If
End Function
==== Text ersetzen ====
VBScript
Function ReplaceRegAusdruck(Zeichenfolge, SuchMuster, ErsetzungsMuster)
' In einer Zeichenfolge wird der dem SuchMuster entsprechende Text ersetzt durch
' den Text, der durch das ErsetzungsMuster beschrieben ist.
Dim regAusdr
Set regAusdr = New RegExp
regAusdr.Pattern = SuchMuster
regAusdr.IgnoreCase = True ' Ignoriert die Groß-/Kleinschreibung.
regAusdr.Global = True ' legt globales Anwenden fest
ReplaceRegAusdruck = regAusdr.Replace(Zeichenfolge, ErsetzungsMuster)
End Function
Wenn verhindert werden soll, dass Leerzeichen eine Eingabe fehlerhaft machen, können diese herausgefiltert werden:\\ VBScript\\
Eingaben = ReplaceRegAusdruck(Eingabe, "\s", "") ' löscht alle Leerräume (Leerzeichen, Tabs ...) im Text
Unter VBScript bietet es sich an, für diese einfache Aufgabe direkt die Funktion //Replace()// zu verwenden. Unter JScript oder bei komplexeren Ersetzungen können Regulärer Ausdrücke jedoch hilfreich sein.