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:

  1. ' Bsp.: Suchmuster für die Eingabe von Länge und Breite eines Bildes. wobei jeder Wert zwei- oder dreistellig sein muss.
  2. ' Die beiden Werte müssen durch ein "x" getrennt werden.
  3. Suchmuster = "^\d{2,3}x\d{2,3}$"
  4.  
  5. ' Bsp.: Zeichen, die in Datei- und Ordnernnamen nicht zulässig sind -> :"<>*/?\|
  6. ' Man beachte die Maskierung per \ von *?\ und die Codierung des ". Das Pipezeichen | steht für Alternativen.
  7. Suchmuster = ":|""|<|>|\*|/|\?|\\|\|"
  8.  
  9. ' Bsp.: Prüfung einer Datumseingabe, die dem Muster TT.MM.JJ oder TT.MM.JJJJ entsprechen soll.
  10. ' Nur das 20. und 21. Jahrhundert ist zulässig.
  11. Suchmuster = "^\d{1,2}\.\d{1,2}\.(\d{2}|(19|20)\d{2})$"
  12.  
  13. ' Bsp.: Nur die Eingabe der Zahlen 5 - 12 ist zulässig.
  14. Suchmuster = "^[5-9]|10|11|12$"
  15.  
  16. ' Bsp.: Eingabe beliebig vieler Ziffer, leere Eingabe ist nicht erlaubt.
  17. Suchmuster = "^[0-9]+$"
  18.  
  19. ' Bsp.: Eingabe eines Seitenverhältnisses nach dem Muster Zahl/Zahl oder Zahl:Zahl
  20. Suchmuster = "^[0-9]+[/:][0-9]+$"
  21. ' ... zusätzlich werden Nullwerte vermieden und Leerzeichen vor und nach dem Trennzeichen zugelassen
  22. Suchmuster = "^[1-9]+[0-9]*\s*[/:]\s*[1-9]+[0-9]*$"

Gültigkeitsprüfung

VBScript

  1. Suchmuster = "^\d{2,3}x\d{2,3}$" ' s.o. erstes Bsp.
  2. Eingabe = InputBox ("Text eingeben")
  3. If SearchRegAusdr (Eingabe, Suchmuster, False) = True Then
  4. MsgBox "Eingabe ist Korrekt"
  5. End If
  6.  
  7. Function SearchRegAusdr(Zeichenfolge, Muster, GrossKleinBeachten)
  8. ' Vergleich einer Zeichenfolge mit einem Suchmuster, bei Übereinstimmung
  9. ' wird True zurückgegeben, sonst False
  10. Dim regAusdr
  11. Set regAusdr = New RegExp
  12. regAusdr.Pattern = Muster
  13. regAusdr.IgnoreCase = GrossKleinBeachten ' Berücksichtigung der Groß-/Kleinschreibung
  14. regAusdr.Global = True ' legt globales Anwenden fest
  15. If regAusdr.Test(Zeichenfolge) then
  16. SearchRegAusdr = True
  17. Else
  18. SearchRegAusdr = False
  19. End If
  20. End Function

Text ersetzen

VBScript

  1. Function ReplaceRegAusdruck(Zeichenfolge, SuchMuster, ErsetzungsMuster)
  2. ' In einer Zeichenfolge wird der dem SuchMuster entsprechende Text ersetzt durch
  3. ' den Text, der durch das ErsetzungsMuster beschrieben ist.
  4. Dim regAusdr
  5. Set regAusdr = New RegExp
  6. regAusdr.Pattern = SuchMuster
  7. regAusdr.IgnoreCase = True ' Ignoriert die Groß-/Kleinschreibung.
  8. regAusdr.Global = True ' legt globales Anwenden fest
  9. ReplaceRegAusdruck = regAusdr.Replace(Zeichenfolge, ErsetzungsMuster)
  10. End Function

Wenn verhindert werden soll, dass Leerzeichen eine Eingabe fehlerhaft machen, können diese herausgefiltert werden:
VBScript

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