Ein „Regulärer Ausdruck“ ist eine Folge von Zeichen, das als Muster zur Suche von Zeichenketten verwendet wird. Reguläre Ausdrücke können dann z. B. in Methoden zum Suchen oder zum Ersetzen von Zeichenfolgen verwendet werden. Im Vergleich zur Suche mit einfachen Zeichenfolgen können mit Regulären Ausdrücken komplexe Muster und zusätzliche Bedingungen, sog. Flags, definiert werden. In JavaScript werden Reguläre Ausdrücke mit Hilfe des „RegExp“-Objekts definiert. Dabei steht „RegExp“ für „regular expression“, was auf deutsch „Regulärer Ausdruck“ heißt.
Ein „RegExp“-Objekt kann auf zwei Arten erstellt werden:
Literal: /Muster/Flags
Konstruktor: new RexExp(Muster, Flags)
HTML-Datei:
Ergebnis:
regexp11 =
typeof(regexp11) =
regexp12 =
typeof(regexp12) =
str1.search(regexp11) =
str1.search(regexp12) =
Mit Flags können zusätzliche Bedingungen für reguläre Ausdrücke angegeben werden:
i: Suche ist unabhängig von Groß- und Kleinschreibung
g: Liefert nicht nur den ersten Treffer, sondern ein Feld aller Treffer
m: Mehrzeilige Suche
HTML-Datei:
Ergebnis:
str2.search(regexp21) =
str2.search(regexp22) =
str2.match(regexp22) =
str2.match(regexp23) =
str2.match(regexp24) =
Das Muster eines Regulären Ausdrucks besteht im einfachsten Fall aus einer Zeichenfolge. Für komplexere Suchen können auch Zeichenklassen, Metazeichen, Quantifizierer und Zusatzbedingungen verwendet werden.
Mit Zeichenklassen können ganze Bereiche von Zeichen spezifiziert werden. Zeichenbereiche werden in eckigen Klammern geschrieben. Dabei wird zwischen Groß- und Kleinschreibung unterschieden:
HTML-Datei:
Ergebnis:
str31.match(/[b]/g) =
str31.match(/[bcd]/g) =
str31.match(/[B]/g) =
str32.match(/[1]/g) =
str32.match(/[10]/g) =
str32.match(/10/g) =
str31.match(/[b-f]/g) =
str31.match(/[d-E]/g) =
str32.match(/[2-7]/g) =
str31.match(/[d|e|D|E]/g) =
str32.match(/[4|8|12]/g) =
Metazeichen sind Zeichen, mit denen bestimmte Zeichentypen beschrieben werden können:
HTML-Datei:
Ergebnis:
str41.match(/./g) =
str41.match(/\w/g) =
str41.match(/\W/g) =
str41.match(/\d/g) =
str41.match(/\D/g) =
str41.match(/\s/g) =
str41.match(/\S/g) =
str42.match(/\b1/g) =
str42.match(/\B1/g) =
str41.match(/\x41/g) =
Mit Quantifizierern kann die Häufigkeit des Vorkommens von bestimmten Zeichen spezifiziert werden:
HTML-Datei:
Ergebnis:
str51.match(/Ha?llo/g) =
str52.match(/Ha?llo/g) =
str51.match(/Ha*llo/g) =
str52.match(/Ha*llo/g) =
str51.match(/Ha+llo/g) =
str52.match(/Ha+llo/g) =
str51.match(/Ha{3}llo/g) =
str52.match(/Ha{3}llo/g) =
str51.match(/Ha{1,3}llo/g) =
str52.match(/Ha{1,3}llo/g) =
Mit Zusatzbedingungen kann definiert werden, ob bestimmte Zeichen am Anfang oder am Ende stehen oder von bestimmten Zeichen gefolgt oder nicht gefolgt werden:
HTML-Datei:
Ergebnis:
str61.match(/^H/g) =
str61.match(/!$/g) =
str61.match(/l?=t/g) =
str61.match(/l?!t/g) =
Die wichtigsten Methoden des „RegExp“-Objekts:
HTML-Datei:
Ergebnis:
/hallo/.test(str71) =
/hallo/i.test(str71) =
/hallo/.exec(str71) =
/hallo/i.exec(str71) =
Als Abschlussübung kannst du folgende Seite erstellen, auf welcher der Anwender mit Hilfe von Eingabefeldern einen Regulären Ausdruck erstellen und eine Zeichenkette damit überprüfen kann:
Gehe dabei wie folgt vor:
Die Lösung kannst du dir hier herunterladen: