Mustervergleich mit Regulären Ausdrücken


Um bei Eingaben von Werten oder Texten eine Gültigkeitsprüfung durchzuführen, können "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 Microsoft Script-Hilfe. Hilfreich für den Einstieg ist z. B. auch dieser Kurs oder dieses Tutorial.
Literaturtipp: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.