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