meta data for this page
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

mustervergleich [2016/10/08 17:51] (aktuell)
Zeile 1: Zeile 1:
 +====== 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.