Reguläre Ausdrücke in JavaScript

JavaScript stellt wie viele andere Programmier- und Skriptsprachen auch eine RegExp-Engine zur Verfügung. Die RegExp-Engine von JavaScript ist nicht allzu aufgebläht, genügt aber für eine grundsätzliche Bearbeitung regulärer Ausdrücke.

Um mit regulären Ausdrücken in JavaScript zu arbeiten, stehen zwei Wege offen:

  • vereinfacht mit Methoden des String-Objektes
  • formal über ein eigenes RegExp-Objekt

Der erste Weg ist in der Regel der bequemere. Zwingend ist der zweite Weg nur, wenn reguläre Ausdrücke erst zur Laufzeit eines JavaScript-Skriptes erzeugt werden (können oder müssen).

RegExp-Methoden des String-Objektes

Zum Suchen und zum Suchen und Ersetzen in Strings mit Hilfe regulärer Ausdrücke können diese Methoden des String-Objektes verwendet werden:

  1. int search(RegExp)
    gibt die Position des ersten Treffers zurück oder -1
  2. mixed (str | array) match(RegExp)
    gibt den einzigen Treffer als String oder mehrere Treffer als Array von Strings zurück
  3. replace(RegExp, str replace)
    ersetzt standardmäßig den ersten Treffer. Sollen alle Fundstellen ersetzt werden, ist der Modifier g (global) zu setzen.

Das RegExp-Objekt

Um mit dem bzw. einem RegExp-Objekt zu arbeiten, muß als erstes ein Objekt instanziiert werden. Dies kann auf zwei Weisen geschehen:

  • implizit: einer Variablen wird ein regulärer Ausdruck zugewiesen
  • explizit: einer Variablen wird eine Instanz des RegExp-Objektes zugewiesen. Dieser Weg ist der einzig mögliche, reguläre Ausdrücke zur Laufzeit zu erzeugen

Bei beiden Verfahren ist zwischen dem globalen RegExp-Objekt oder ach dem Prototyp (in anderen Programmiersprachen entspricht dies der eigentlichen „Klasse“ RegExp) und dem lokalen RegExp-Objekt, der Instanz, zu unterscheiden. In welchem Kontext man sich befindet, hat verschiedene Auswirkungen hinsichtlich der abrufbaren Eigenschaften und Methoden.

Die wichtigste Methode des RegExp-Objektes auf Ebene einer Instanz ist

  • mixed (array | null) exec(str)
    führt den dem RegExp-Objekt in einer Variablen zugewiesenen regulären Ausdruck mit einem als Argument an die Methode zu übergebenden String aus. Als Ergebnis wird ein Array mit dem Treffer des gesamten regulären Ausdrucks sowie den Treffern möglicher Gruppierungen (Subpatterns, Klammerungen) zurückgegeben. Wenn der reguläre Ausdruck nicht auf den String paßt, wird der Wert null zurückgegeben.

Das RegExp-Objekt enthält neben RegExp.exec() einige weitere Methoden.