## RegExp

Allgemeines zur Verwendung

### Eigenschaften:

$[1..9] (geklammerte Unterausdrücke)

### Methoden:

exec() (Regulären Ausdruck anwenden)
test() (Regulären Ausdruck probehalber anwenden)

## Allgemeines zur Verwendung

Reguläre Ausdrücke dienen dazu, Suchausdrücke zu formulieren, um in Zeichenketten danach zu suchen und um gefundene Stellen durch andere zu ersetzen.

Reguläre Ausdrücke können Sie in JavaScript direkt innerhalb entsprechender Methoden des string-Objekts anwenden, nämlich in den Methoden:
match()
replace()
search().
Dort wird beschrieben, wie und wo Sie den regulären Ausdruck genau verwenden können, um Zeichenketten zu durchsuchen und Teile darin zu ersetzen.

Das `RegExp`-Objekt von JavaScript brauchen Sie dagegen nur, wenn Sie reguläre Ausdrücke zur Laufzeit des Scripts dynamisch erzeugen und ändern wollen. Dazu können Sie eine Instanz eines `RegExp`-Objekts definieren. Auf diese Instanz können Sie anschließend die Eigenschaften und Methoden des `RegExp`-Objekts anwenden, die hier beschrieben werden.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    <!--
    function Ausgabe(Wert)
    {
     var Ausdruck = /(\w.+)\s(\w.+)/;
     Ausdruck.exec(Wert);
     alert(RegExp.$2 + ", " + RegExp.$1);
    }
    //-->
    </script>
    </head><body>
    <form action="">
    <input name="User" value="Vorname Zuname">
    <input type="button" value="Ausgabe" onClick="Ausgabe(this.form.User.value)">
    </form>
    </body></html>

### Erläuterung:

Das Beispiel zeigt, wie sich ein Name des Schemas "Vorname Name" unter Verwendung eines regulären Ausdrucks in das Schema "Name, Vorname" verwandeln lässt.

Das Beispiel enthält ein Formular mit einem Eingabefeld und einem Button. In dem Eingabefeld soll der Anwender seinen Namen in der Form "Vorname Name" eingeben. Deshalb ist das Feld auch schon so vorbelegt. Beim Anklicken des Buttons wird die Funktion `Ausgabe()` aufgerufen, die im Dateikopf definiert ist. Als Parameter bekommt die Funktion den Inhalt des Eingabefeldes übergeben.

Innerhalb der Funktion wird ein regulärer Ausdruck (Suchausdruck) definiert, der in der Variablen `Ausdruck` gespeichert wird. Solche regulären Ausdrücke werden in einfache Schrägstriche `/.../` eingeschlossen. Der reguläre Ausdruck im obigen Beispiel ist so zu lesen: Suche nach einer beliebigen Anzahl von aneinandergereihten Buchstaben ohne Ziffern und Satzzeichen und merke dir das Ergebnis = `(\w.+)`. Suche dann nach einem einzelnen Leerzeichen = `\s`. Suche dann noch mal nach einer beliebigen Buchstabenreihenfolge und merke dir das Ergebnis = `(\w.+)`. Auf diese Weise wird das Schema "Vorname Name" gefunden. Die beiden Klammern um das `(\w.+)` führen dazu, dass die beiden einzelnen Buchstabenreihenfolgen als einzelne Teile intern gemerkt werden. Später sind diese einzelnen gemerkten Teile separat ansprechbar.

Im Beispiel wird mit dem nächsten Befehl die eine wichtige Methode des `RegExp`-Objekts auf den zuvor definierten regulären Ausdruck angewendet, nämlich die Methode `exec()`. Dadurch wird der Ausdruck "ausgeführt" und direkt dem `RegExp`-Objekt zugewiesen. Im Beispiel wird mit `RegExp.$2` direkt auf den zweiten, zuvor intern gemerkten Klammerausdruck zugegriffen, und mit `RegExp.$1` auf den ersten dieser Ausdrücke. Durch die Anordnung mit dem Komma dazwischen bei der Ausgabe mit `alert()` erscheint der zuvor eingegebene "Vorname Name" dann in dem anderen Schema "Name, Vorname".

### Syntax regulärer Ausdrücke

Die folgende Übersicht zeigt, aus welchen Bestandteilen Sie einen regulären Ausdruck zusammensetzen können.

Bestandteil | Beispiel | Beschreibung
--- | --- | ---
`` | `/aus/` | findet "aus", und zwar in "aus", "Haus", "auserlesen" und "Banause".
`^` | `/^aus/` | findet "aus" am Anfang des zu durchsuchenden Wertes, also in "aus" und "auserlesen", sofern das die ersten Wörter im Wert sind.
`$` | `/aus$/` | findet "aus" am Ende des zu durchsuchenden Wertes, also in "aus" und "Haus", sofern das die letzten Wörter im Wert sind.
`*` | `/aus*/` | findet "aus", "auss" und "aussssss", also das letzte Zeichen vor dem Stern 0 oder beliebig oft hintereinander wiederholt.
`+` | `/aus+/` | findet "auss" und "aussssss", also das letzte Zeichen vor dem Stern mindestens einmal oder beliebig oft hintereinander wiederholt.
`.` | `/.aus/` | findet "Haus" und "Maus", also ein beliebiges Zeichen an einer bestimmten Stelle.
`.+` | `/.+aus/` | findet "Haus" und "Kehraus", also eine beliebige Zeichenfolge an einer bestimmten Stelle. Zusammensetzung aus beliebiges Zeichen und beliebig viele davon.
`\b` | `/\baus\b/` | findet "aus" als einzelnes Wort. \b bedeutet eine Wortgrenze.
`\B` | `/\Baus\B/` | findet "aus" nur innerhalb von Wörtern, z.B. in "hausen" oder "Totalausfall". \B bedeutet keine Wortgrenze.
`\d` | `/\d.+\B/` | findet eine beliebige ganze Zahl. \d bedeutet eine Ziffer (0 bis 9)
`\D` | `/\D.+/` | findet "-fach" in "3-fach", also keine Ziffer.
`\f` | `/\f/` | findet ein Seitenvorschubzeichen.
`\n` | `/\n/` | findet ein Zeilenvorschubzeichen.
`\r` | `/\r/` | findet ein Wagenrücklaufzeichen.
`\t` | `/\t/` | findet ein Tabulatorzeichen.
`\v` | `/\v/` | findet ein vertikales Tabulatorzeichen.
`\s` | `/\s/` | findet jede Art von white space, also \f\n\t\v und Leerzeichen.
`\S` | `/\S.+/` | findet ein beliebiges einzelnes Zeichen, das kein white space ist, also kein \f\n\t\v und kein Leerzeichen.
`\w` | `/\w.+/` | findet alle alphanumerischen Zeichen und den Unterstrich (typische Bedingung etwa für programmiersprachengerechte selbstvergebene Namen).
`\W` | `/\W/` | findet ein Zeichen, das nicht alphanumerisch und auch kein Unterstrich ist (typisch zum Suchen nach illegalen Zeichen bei programmiersprachengerechten selbstvergebenen Namen).
`\()` | `/(aus)/` | findet "aus" und merkt es sich intern. Bis zu 9 solcher Klammern (Merkplätze) sind in einem regulären Ausdruck erlaubt.
`/.../g` | `/aus/g` | findet "aus" so oft wie es in dem gesamten zu durchsuchenden Bereich vorkommt. Die Fundstellen werden intern in einem Array gespeichert.
`/.../i` | `/aus/i` | findet "aus", "Aus" und "AUS", also unabhängig von Groß-/Kleinschreibung.
`/.../gi` | `/aus/gi` | findet "aus", so oft wie es in dem gesamten zu durchsuchenden Bereich vorkommt (`g`) und unabhängig von Groß-/Kleinschreibung (`i`).

Weitere, evtl. vollständigere Informationen über reguläre Ausdrücke finden Sie innerhalb dieser Dokumentation auf der Seite reguläre Ausdrücke in Perl.

## $[1..9]

Speichert gemerkte Bestandteile eines regulären Ausdrucks, also geklammerte Teile.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    <!--
     var Vollversion = /(\d)/;
     Vollversion.exec(navigator.userAgent);
     document.write("Volle Versionsnummer Ihres Browsers: " + RegExp.$1);
    //-->
    </script>
    </body></html>

### Erläuterung:

Das Beispiel definiert einen regulären Ausdruck namens `Vollversion`, der nach dem ersten Vorkommen einer Ziffer sucht und sich die Fundstelle durch eine Klammer = `(\d)` merkt. Dieser reguläre Ausdruck wird dann auf die Objekteigenschaft navigator.userAgent angewendet, die Angaben zum Browser des Anwenders speichert. Da dieser Wert einem bestimmten Schema folgt, ist klar, dass die erste darin vorkommende Ziffer die Vollversion des Browsers darstellt (sofern sie einstellig ist). Im Beispiel wird die gefundene Versionsnummer dynamisch in die Datei geschrieben. Dabei wird direkt über das `RegExp`-Objekt auf die Eigenschaft `$1` zugegriffen. Das ist der erste in einer Klammer gemerkte Teilausdruck des aktuellen regulären Ausdrucks, im Beispiel die Versionsziffer.

## exec()

Wendet einen regulären Ausdruck auf eine Zeichenkette an.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    <!--
     var derSatz = "Auf der Mauer";
     var Suche = /(au)/g;
     var Ergebnis = Suche.exec(derSatz);
     document.write(Ergebnis.length + " Suchtreffer");
    //-->
    </script>
    </body></html>

### Erläuterung:

Das Beispiel demonstriert den Zusammenhang: ein regulärer Ausdruck wird definiert, im Beispiel ein regulärer Ausdruck mit dem Namen `Suche`. Mit einer Anweisung wie `Suche.exec()` können Sie dann die Suche starten. Als Parameter wird der Methode in der Regel der zu durchsucchende Ausdruck übergeben. Die Methode gibt die gefundenen Suchtreffer zurück. Die Variable, in der der Rückgabewert gespeichert wird (im Beispiel die Variable `Ergebnis`), wird automatisch zu einem Array, wenn mehr als ein Suchtreffer gefunden wurde. Im Beispiel werden zwei Treffer gefunden. Deshalb lässt sich auch die Array-Eigenschaft `length` auf die Variable `Ergebnis` anwenden.

## test()

Testet vorab, ob ein regulärer Ausdruck zu Suchtreffern führt oder nicht. Gibt `true` zurück, wenn etwas gefunden wurde, und `false`, wenn nichts gefunden wurde.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <script type="text/javascript">
    <!--
     var derSatz = "Auf der Mauer";
     var Suche = /(sonstwas)/g;
     var Ergebnis = Suche.test(derSatz);
     if(Ergebnis == false)
     document.write("nichts gefunden");
    //-->
    </script>
    </body></html>

### Erläuterung:

Das Beispiel definiert einen regulären Ausdruck namens `Suche` und wendet ihn mit Hilfe der Methode `test()` auf die Variable `derSatz` an. Der Rückgabewert wird in der Variablen `Ergebnis` gespeichert. Wenn nichts gefunden wird, wird ein entsprechender Hinweis geschrieben. Im Beispiel ist das der Fall.

| Screen
| Number

© 2001 selfhtml@teamone.de