Reguläre Ausdrücke

  • Adressname der Version: JavaScript/Guide/Regular_Expressions
  • Titel der Version: Reguläre Ausdrücke
  • ID der Version: 311229
  • Erstellt:
  • Autor: eminor
  • Aktuelle Version? Nein
  • Kommentar

Inhalt der Version

Reguläre Ausdrücke sind Muster, die eingesetzt werden, um Text auf bestimmte Zeichenkombinationen zu überprüfen. Auch reguläre Ausdrücke sind Objekte bei JavaScript. Die Muster werden mit den Methoden exec und test von RegExp und den Methoden match, replace, search und split von String verwendet. Dieses Kapitel beschreibt reguläre Ausdrücke in JavaScript.

Erstellen von regulären Ausdrücken

Ein regulärer Ausdruck kann auf zwei verschiedene Arten erstellt werden.

Zum einen kann ein Literal verwendet werden:

var re = /ab+c/;

Hierbei findet die Komplilierung des regulären Ausdrucks während der Auswertung des Scripts statt. Wenn der reguläre Ausdruck konstant bleibt, sich also nicht ändert, ist diese Vorgehensweise aufgrund der schnelleren Ausführungsgeschwindigkeit empfehlenswert.

Zum anderen kann wie folgt die Konstruktorfunktion des Objekts RegExp zum Einsatz kommen:

var re = new RegExp("ab+c");

Bei der Benutzung der Konstruktorfunktion wird der reguläre Ausdruck während der Laufzeit kompiliert. Sie sollte verwendet werden, wenn man weiß, dass sich das Muster während der Laufzeit ändert oder man das Muster noch nicht kennt und von einer anderen Quelle, wie z.B. der Benutzereingabe, bezieht.

Schreiben von Mustern für reguläre Ausdrücke

Ein Muster eines regulären Ausdrucks wird aus einfachen Zeichen, wie z.B. /abc/ oder einer Kombination von einfachen und speziellen Zeichen, wie z.B. /ab*c/ oder /Kapitel (\d+)\.\d*/ erstellt. Das letzte Beispiel enthält Klammern, die zur Speicherung verwendet werden. Die Übereinstimmung im Text, welche auf das eingeklammerte Muster passt, wird hierbei für die spätere Verwendung gespeichert, wie unter Benutzung von geklammerten Mustern beschrieben.

Verwendung von einfachen Mustern

Einfache Muster werden aus Zeichen konstruiert, für die man eine direkte Übereinstimmung finden möchte. Zum Beispiel passt das Muster /abc/ nur dann für eine Zeichenkette, wenn exakt die Zeichen 'abc' aufeinander folgend in dieser Reihenfolge vorkommen. Solch eine Übereinstimmung kommt z.B. in der Zeichenkette "Hallo, kennst du das abc?" und "Das müssen wir noch abchecken." vor. In beiden Fällen enthält die Zeichenkette die Zeichenfolge "abc". In der Zeichenkette "Stab" gibt es keine Übereinstimmung, weil die Zeichenfolge "abc" darin nich vorkommt.

Verwendung von speziellen Zeichen

Wenn bei der Suche nicht nur nach einer direkten Übereinstimmung, sondern z.B. nach einem oder mehreren aufeinander folgenden Vorkommen des Buchstabens "b" oder nach Leerräumen (egal ob Tab oder Leerzeichen) gesucht wird, kommen spezielle Zeichen zum Einsatz. Zum Beispiel stimmt das Muster /ab*c/ mit allen Zeichenkombinationen überein, die ein "a", dann sofort darauf folgend 0 oder mehrere "b" (Der Stern bedeutet 0 oder mehr Vorkommen des vorherigen Zeichens) und anschließend sofort ein "c" enthalten. Demnach wird in der Zeichnfolge "cbbabbbbcdebc," eine Übereinstimmung gefunden, weil das Muster auf die Zeichenfolge "abbbbc" passt.

Die folgende Tabelle zeigt eine komplette Liste der speziellen Zeichen, die in regulären Ausdrücken verwendet werden, mit einer Beschreibung zu deren Bedeutung.

Tabelle 4.1 Spezielle Zeichen in regulären Ausdrücken
Character Meaning
\ Eine der folgenden Bedeutungen:
  • Für Zeichen, die normalerweise buchstäblich interpretiert werden, wird mit der Voranstellung des Rückstrichs dafür gesorgt, dass das Zeichen als speziell und nicht als normales Zeichen interpretiert wird. Zum Beispiel stimmt /b/ mit dem Zeichen "b" überein. Stellt man dem "b" einen Rückstrich voran, also /\b/, wird das Zeichen als spezielles Zeichen - in diesem Fall als Wortgrenze - gedeutet.
  • Bei Zeichen, die normalerweise sofort als spezielle Zeichen interpretiert werden, bewirkt der Rückstrich genau das Gegenteil, d.h. dem Zeichen wird die spezielle Bedeutung genommen und es wird als einfaches Zeichen interpretiert. Zum Beispiel ist das Zeichen * (Stern) ein spezielles Zeichen mit der Bedeutung: 0 oder mehr Vorkommen des vorherigen Zeichens. Der Ausdruck /a*/ steht demnach für 0 oder mehr a's. Um dem Zeichen * (Stern) die spezielle Bedeutung zu nehmen, stellt man ihm einen Rückstrich voran, z.B. stimmt /a\*/ mit 'a*' überein - der Stern wird nun als einfaches Zeichen interpretiert.
  • Man sollte sich merken, dass bei Verwendung der new RegExp("pattern") Notation auch der Rüchstrich selbst eine spezielle Bedeutung hat und "entschärft" werden muss, wenn er als normales Zeichen interpretiert werden soll.
^

Das Zirkumflex-Zeichen steht für den Anfang der Eingabe. Wenn das Flag für mehrere Zeilen (multiline flag) auf true gesetzt wurde, wird auch eine Übereinstimmung direkt hinter dem Zeichen für einen Zeilenumbruch (\n) gefunden.

Der Ausdruck /^A/ passt zwar auf das "A" in "Apfel", nicht  jedoch auf das "A" in "Ein Apfel", weil das "A" bei letzterer Zeichenkette nicht am Anfang steht.

Dieses Zeichen bedeutet etwas anderes, wenn es als erstes Zeichen innerhalb von eckigen Klammern (einer Zeichenauswahl) steht.

Zum Beispiel stimmt /[^a-z\s]/ mit der "3" in "Ich habe 3 Schwestern" überein. Mit den eckigen Klammern wird die Zeichnauswahl gekennzeichnet. Das Zirkumflex innerhalb dieser Klammern negiert die aufgezählten Zeichen: nicht a bis z und keine Leerräume wie das Leerzeichen, der Tabulator oder die Steuerzeichen; übrig bleibt allein die "3".

 

$

Das Dollarzeichen steht für das Zeilenende. Wenn das Flag für mehrere Zeilen (multiline flag) auf true gesetzt wurde, wird auch eine Übereinstimmung direkt hinter dem Zeichen für einen Zeilenumbruch (\n) gefunden.

Zum Beispiel wird mit /t$/ bei "Butter" keine Übereinstimmung gefunden, jedoch bei "Brot", weil das "t" am Ende steht.

*

Das Sternchen steht für eine beliebige Anzahl des vorangestellten Zeichens, also 0-mal oder öfter. Das Zeichen muss also nicht unbedingt vorkommen, sondern darf auch einfach nicht vorhanden sein. Das Sternchen wird gerne zusammen mit dem . (Punkt) als Platzhalter für "ein beliebiges Zeichen beliebig oft" verwendet.

Der Ausdruck /bo*/ passt auf "buuuuu" in "Ein Geist buuuuuht" als auch auf "b"  und "bb" in "Ein Blauwal blubbert", jedoch nicht auf "Eine Katze kratzt".

+

Steht für das vorangestellte Zeichen einmal oder öfter und ist equivalent zu {1,}. Das Zeichen muss für einen Treffer also mindestens einmal vorkommen.

Zum Beispiel passt /a+/ auf "a" in "Schokolade" und alle a's in "Schokolaaaade".

?

Steht für das vorangestellte Zeichen 0 oder einmal und ist equivalent zu {0,1}.

Zum Beispiewird passt /e?le?/ sowohl auf "el" in "Engel", als auch auf das "le" in "Kapelle" und auch das "l" in "Oslo".

Wenn es sofort hinter einen der Quantoren *, +, ?, oder {} gestellt wird, deaktiviert es die "Gierigkeit" dieser Quantoren und macht sie "genügsam"(für die minimale Anzahl der passende Zeichen stehend) anstatt der standardmäßigen "Gierigkeit" dieser Quantoren (für die maximale Anzahl der übereinstimmenden Zeichen stehend).

Zum Beispiel steht der Ausdruck /\d+/ nicht-global (?) verwendet auf die Zeichenkette "123abc" angewendet für "123", weil der Quantor + (Pluszeichen) "gierig" ist. Der Ausdruck /\d+?/ steht hingegen nur für "1", weil der Quantor + (Pluszeichen) aufgrund der Beeinflussung durch das hintangestellte ? (Fragezeichen) "genügsam" ist.

Das Fragezeichen wird auch bei lookahead assertions (?) (vorausgreifenden Zusicherungen) eingesetzt, die in dieser Tabelle unter x(?=y) und x(?!y) beschrieben sind.

.

Der Punkt steht für ein einzelnes Zeichen mit Ausnahme des Zeichens für den Zeilenumbruch.

Zum Beispiel passt /.n/ auf "in" und "än" in der Zeichenkette "nur ein Apfel hängt am Baum", jedoch nicht auf das "n" ganz am Anfang.

(x)

Steht für "x", also die eingeklammerten Zeichen. Diese werden gespeichert, damit sie an anderer Stelle wieder eingesetzt werden können. Die Klammern werden auch "capturing parentheses" (aufnehmende Klammern) genannt.

Zum Beispiel steht /(foo)/ für "foo" in "foobar" und gleichzeitig wird "foo" gespeichert. Die passenden Zeichen können durch Array-Elemente wieder eingesetzt werden. Dabei steht [1] für die Zeichen des ersten Klammerpaars, [2] für die Zeichen des zweiten Paars usw.

(?:x) Steht für  "x", aber die Übereinstimmung wird nicht gespeichert. Diese Klammern werden auch als "non-capturing parentheses" bezeichnet. Die übereinstimmenden Zeichen können nicht wieder eingesetzt werden und die Array-Elemente [1], ..., [n] finden keine Anwendung.
x(?=y)

Steht für "x", jedoch nur wenn "x" vor "y" steht. Dies wird als "lookahead" (Vorgriff) bezeichnet.

Zum Beispiel passt /Jack(?=Sprat)/ auf "Jack" nur dann, wenn "Sprat" dahinter steht. Der Ausdruck /Jack(?=Sprat|Frost)/ passt auf "Jack" nur dann, wenn dahinter "Sprat" oder "Frost" steht. Doch weder "Sprat" noch "Frost" ist Teil des übereinstimmenden Ergenisses.

x(?!y)

Matches 'x' only if 'x' is not followed by 'y'. This is called a negated lookahead.

For example, /\d+(?!\.)/ matches a number only if it is not followed by a decimal point. The regular expression /\d+(?!\.)/.exec("3.141") matches '141' but not '3.141'.

x|y

Matches either 'x' or 'y'.

For example, /green|red/ matches 'green' in "green apple" and 'red' in "red apple."

{n}

Where n is a positive integer. Matches exactly n occurrences of the preceding character.

For example, /a{2}/ doesn't match the 'a' in "candy," but it matches all of the a's in "caandy," and the first two a's in "caaandy."

{n,m}

Where n and m are positive integers. Matches at least n and at most m occurrences of the preceding character. When either n or m is zero, it can be omitted.

For example, /a{1,3}/ matches nothing in "cndy", the 'a' in "candy," the first two a's in "caandy," and the first three a's in "caaaaaaandy" Notice that when matching "caaaaaaandy", the match is "aaa", even though the original string had more a's in it.

[xyz]

A character set. Matches any one of the enclosed characters. You can specify a range of characters by using a hyphen. Special characters (such as the dot (.) and the asterisk (*)) do not have any special meaning inside a character set. They need not be escaped. Escape sequences also work.

For example, [abcd] is the same as [a-d]. They match the 'b' in "brisket" and the 'c' in "city". /[a-z.]+/ and /[\w.]+/ both match everything in "test.i.ng".

[^xyz]

A negated or complemented character set. That is, it matches anything that is not enclosed in the brackets. You can specify a range of characters by using a hyphen. Everything that works in the normal character set also works here.

For example, [^abc] is the same as [^a-c]. They initially match 'r' in "brisket" and 'h' in "chop."

[\b] Matches a backspace (U+0008). (Not to be confused with \ b.)
\b

Matches a word boundary. A word boundary matches the position where a word character is not followed or preceeded by another word-character. Note that a matched word boundary is not included in the match. In other words, the length of a matched word boundary is zero. (Not to be confused with [\b].)

Examples:
/\bmoo/ matches the 'm' in "moon" ;
/oo\b/ does not match the 'oo' in "moon", because 'oo' is followed by 'n' which is a word character;
/oon\b/ matches the 'oon' in "moon", because 'oon' is the end of the string, thus not followed by a word character;
/\w\b\w/ will never match anything, because a word character can never be followed by both a non-word and a word character.

\B

Matches a non-word boundary. This matches a position where the previous and next character are of the same type: Either both must be words, or both must be non-words. The beginning and end of a string are considered non-words.

For example, /\B../ matches 'oo' in "noonday" (, and /y\B./ matches 'ye' in "possibly yesterday."

\cX

Where X is a character ranging from A to Z. Matches a control character in a string.

For example, /\cM/ matches control-M (U+000D) in a string.

\d

Matches a digit character. Equivalent to [0-9].

For example, /\d/ or /[0-9]/ matches '2' in "B2 is the suite number."

\D

Matches any non-digit character. Equivalent to [^0-9].

For example, /\D/ or /[^0-9]/ matches 'B' in "B2 is the suite number."

\f Matches a form feed (U+000C).
\n Matches a line feed (U+000A).
\r Matches a carriage return (U+000D).
\s

Matches a single white space character, including space, tab, form feed, line feed. Equivalent to [ \f\n\r\t\v​\u00A0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004​ \u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​\u2028\u2029​ \u202f\u205f​\u3000].

For example, /\s\w*/ matches ' bar' in "foo bar."

\S

Matches a single character other than white space. Equivalent to [^ \f\n\r\t\v​\u00A0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004​ \u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​\u2028\u2029​ \u202f\u205f​\u3000].

For example, /\S\w*/ matches 'foo' in "foo bar."

\t Matches a tab (U+0009).
\v Matches a vertical tab (U+000B).
\w

Matches any alphanumeric character including the underscore. Equivalent to [A-Za-z0-9_].

For example, /\w/ matches 'a' in "apple," '5' in "$5.28," and '3' in "3D."

\W

Matches any non-word character. Equivalent to [^A-Za-z0-9_].

For example, /\W/ or /[^A-Za-z0-9_]/ matches '%' in "50%."

\n

Where n is a positive integer. A back reference to the last substring matching the n parenthetical in the regular expression (counting left parentheses).

For example, /apple(,)\sorange\1/ matches 'apple, orange,' in "apple, orange, cherry, peach."

\0 Matches a NULL (U+0000) character. Do not follow this with another digit, because \0<digits> is an octal escape sequence.
\xhh Matches the character with the code hh (two hexadecimal digits)
\uhhhh Matches the character with the code hhhh (four hexadecimal digits).

 

Quelltext der Version

<p>Reguläre Ausdrücke sind Muster, die eingesetzt werden, um Text auf bestimmte Zeichenkombinationen zu überprüfen. Auch reguläre Ausdrücke sind Objekte bei JavaScript. Die Muster werden mit den Methoden <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp/exec" title="exec"><code>exec</code></a> und <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp/test" title="test"><code>test</code></a> von <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp" title="RegExp"><code>RegExp</code></a> und den Methoden <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/match" title="match"><code>match</code></a>, <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace" title="en-US/docs/JavaScript/Reference/Global_Objects/String/replace"><code>replace</code></a>,<a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/search" title="search"> <code>search</code></a> und <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split" title="split"><code>split</code></a> von <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String" title="String"><code>String</code></a> verwendet. Dieses Kapitel beschreibt reguläre Ausdrücke in JavaScript.</p>
<h2 id="Erstellen_von_regul.C3.A4ren_Ausdr.C3.BCcken">Erstellen von regulären Ausdrücken</h2>
<p>Ein regulärer Ausdruck kann auf zwei verschiedene Arten erstellt werden.</p>
<p>Zum einen kann ein Literal verwendet werden:</p>
<pre class="brush:js;">
var re = /ab+c/;</pre>
<p>Hierbei findet die Komplilierung des regulären Ausdrucks während der Auswertung des Scripts statt. Wenn der reguläre Ausdruck konstant bleibt, sich also nicht ändert, ist diese Vorgehensweise aufgrund der schnelleren Ausführungsgeschwindigkeit empfehlenswert.</p>
<p>Zum anderen kann wie folgt die Konstruktorfunktion des Objekts <code><a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp" title="en-US/docs/JavaScript/Reference/Global Objects/RegExp">RegExp</a></code> zum Einsatz kommen:</p>
<pre class="brush:js;">
var re = new RegExp("ab+c");</pre>
<p>Bei der Benutzung der Konstruktorfunktion wird der reguläre Ausdruck während der Laufzeit kompiliert. Sie sollte verwendet werden, wenn man weiß, dass sich das Muster während der Laufzeit ändert oder man das Muster noch nicht kennt und von einer anderen Quelle, wie z.B. der Benutzereingabe, bezieht.</p>
<h2 id="Schreiben_von_Mustern_f.C3.BCr_regul.C3.A4re_Ausdr.C3.BCcke">Schreiben von Mustern für reguläre Ausdrücke</h2>
<p>Ein Muster eines regulären Ausdrucks wird aus einfachen Zeichen, wie z.B. /abc/ oder einer Kombination von einfachen und speziellen Zeichen, wie z.B. /ab*c/ oder /Kapitel (\d+)\.\d*/ erstellt. Das letzte Beispiel enthält Klammern, die zur Speicherung verwendet werden. Die Übereinstimmung im Text, welche auf das eingeklammerte Muster passt, wird hierbei für die spätere Verwendung gespeichert, wie unter <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions#Using_Parenthesized_Substring_Matches">Benutzung von geklammerten Mustern</a> beschrieben.</p>
<h3 id="Verwendung_von_einfachen_Mustern">Verwendung von einfachen Mustern</h3>
<p>Einfache Muster werden aus Zeichen konstruiert, für die man eine direkte Übereinstimmung finden möchte. Zum Beispiel passt das Muster /abc/ nur dann für eine Zeichenkette, wenn exakt die Zeichen 'abc' aufeinander folgend in dieser Reihenfolge vorkommen. Solch eine Übereinstimmung kommt z.B. in der Zeichenkette "Hallo, kennst du das abc?" und "Das müssen wir noch abchecken." vor. In beiden Fällen enthält die Zeichenkette die Zeichenfolge "abc". In der Zeichenkette "Stab" gibt es keine Übereinstimmung, weil die Zeichenfolge "abc" darin nich vorkommt.</p>
<h3 id="Verwendung_von_speziellen_Zeichen">Verwendung von speziellen Zeichen</h3>
<p>Wenn bei der Suche nicht nur nach einer direkten Übereinstimmung, sondern z.B. nach einem oder mehreren aufeinander folgenden Vorkommen des Buchstabens "b" oder nach Leerräumen (egal ob Tab oder Leerzeichen) gesucht wird, kommen spezielle Zeichen zum Einsatz. Zum Beispiel stimmt das Muster /ab*c/ mit allen Zeichenkombinationen überein, die ein "a", dann sofort darauf folgend 0 oder mehrere "b" (Der Stern bedeutet 0 oder mehr Vorkommen des vorherigen Zeichens) und anschließend sofort ein "c" enthalten. Demnach wird in der Zeichnfolge "cbbabbbbcdebc," eine Übereinstimmung gefunden, weil das Muster auf die Zeichenfolge "abbbbc" passt.</p>
<p>Die folgende Tabelle zeigt eine komplette Liste der speziellen Zeichen, die in regulären Ausdrücken verwendet werden, mit einer Beschreibung zu deren Bedeutung.</p>
<table class="fullwidth-table">
  <caption style="text-align: left">
    Tabelle 4.1 Spezielle Zeichen in regulären Ausdrücken</caption>
  <thead>
    <tr>
      <th scope="col">Character</th>
      <th scope="col">Meaning</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-backslash" id="special-backslash" name="special-backslash"><code>\</code></a></td>
      <td>Eine der folgenden Bedeutungen:<br />
        <ul>
          <li>Für Zeichen, die normalerweise buchstäblich interpretiert werden, wird mit der Voranstellung des Rückstrichs dafür gesorgt, dass das Zeichen als speziell und nicht als normales Zeichen interpretiert wird. Zum Beispiel stimmt <code>/b/</code> mit dem Zeichen "b" überein. Stellt man dem "b" einen Rückstrich voran, also <code>/\b/</code>, wird das Zeichen als spezielles Zeichen - in diesem Fall als Wortgrenze - gedeutet.</li>
          <li>Bei Zeichen, die normalerweise sofort als spezielle Zeichen interpretiert werden, bewirkt der Rückstrich genau das Gegenteil, d.h. dem Zeichen wird die spezielle Bedeutung genommen und es wird als einfaches Zeichen interpretiert. Zum Beispiel ist das Zeichen * (Stern) ein spezielles Zeichen mit der Bedeutung: 0 oder mehr Vorkommen des vorherigen Zeichens. Der Ausdruck /a*/ steht demnach für 0 oder mehr a's. Um dem Zeichen * (Stern) die spezielle Bedeutung zu nehmen, stellt man ihm einen Rückstrich voran, z.B. stimmt /a\*/ mit 'a*' überein - der Stern wird nun als einfaches Zeichen interpretiert.</li>
          <li>Man sollte sich merken, dass bei Verwendung der new RegExp("pattern") Notation auch der Rüchstrich selbst eine spezielle Bedeutung hat und "entschärft" werden muss, wenn er als normales Zeichen interpretiert werden soll.</li>
        </ul>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-caret" id="special-caret" name="special-caret"><code>^</code></a></td>
      <td>
        <p>Das Zirkumflex-Zeichen steht für den Anfang der Eingabe. Wenn das Flag für mehrere Zeilen (multiline flag) auf true gesetzt wurde, wird auch eine Übereinstimmung direkt hinter dem Zeichen für einen Zeilenumbruch (\n) gefunden.</p>
        <p>Der Ausdruck <code>/^A/</code> passt zwar auf das "A" in "Apfel", nicht&nbsp; jedoch auf das "A" in "Ein Apfel", weil das "A" bei letzterer Zeichenkette nicht am Anfang steht.</p>
        <p>Dieses Zeichen bedeutet etwas anderes, wenn es als erstes Zeichen innerhalb von eckigen Klammern (einer Zeichenauswahl) steht.</p>
        <p>Zum Beispiel stimmt <code>/[^a-z\s]/</code> mit der "3" in "Ich habe 3 Schwestern" überein. Mit den eckigen Klammern wird die Zeichnauswahl gekennzeichnet. Das Zirkumflex innerhalb dieser Klammern negiert die aufgezählten Zeichen: nicht a bis z und keine Leerräume wie das Leerzeichen, der Tabulator oder die Steuerzeichen; übrig bleibt allein die "3".</p>
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-dollar" id="special-dollar" name="special-dollar"><code>$</code></a></td>
      <td>
        <p>Das Dollarzeichen steht für das Zeilenende. Wenn das Flag für mehrere Zeilen (multiline flag) auf true gesetzt wurde, wird auch eine Übereinstimmung direkt hinter dem Zeichen für einen Zeilenumbruch (\n) gefunden.</p>
        <p>Zum Beispiel wird mit <code>/t$/</code> bei "Butter" keine Übereinstimmung gefunden, jedoch bei "Brot", weil das "t" am Ende steht.</p>
      </td>
    </tr>
    <tr>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-asterisk" id="special-asterisk" name="special-asterisk"><code>*</code></a></td>
      <td>
        <p>Das Sternchen steht für eine beliebige Anzahl des vorangestellten Zeichens, also 0-mal oder öfter. Das Zeichen muss also nicht unbedingt vorkommen, sondern darf auch einfach nicht vorhanden sein. Das Sternchen wird gerne zusammen mit dem . (Punkt) als Platzhalter für "ein beliebiges Zeichen beliebig oft" verwendet.</p>
        <p>Der Ausdruck <code>/bo*/</code> passt auf "buuuuu" in "Ein Geist buuuuuht" als auch auf "b"&nbsp; und "bb" in "Ein Blauwal blubbert", jedoch nicht auf "Eine Katze kratzt".</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-plus" id="special-plus" name="special-plus"><code>+</code></a></td>
      <td>
        <p>Steht für das vorangestellte Zeichen einmal oder öfter und ist equivalent zu {1,}. Das Zeichen muss für einen Treffer also mindestens einmal vorkommen.</p>
        <p>Zum Beispiel passt <code>/a+/</code> auf "a" in "Schokolade" und alle a's in "Schokolaaaade".</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-questionmark" id="special-questionmark" name="special-questionmark"><code>?</code></a></td>
      <td>
        <p>Steht für das vorangestellte Zeichen 0 oder einmal und ist equivalent zu {0,1}.</p>
        <p>Zum Beispiewird passt <code>/e?le?/</code> sowohl auf "el" in "Engel", als auch auf das "le" in "Kapelle" und auch das "l" in "Oslo".</p>
        <p>Wenn es sofort hinter einen der Quantoren <code>*</code>, <code>+</code>, <code>?</code>, oder <code>{}</code> gestellt wird, deaktiviert es die "Gierigkeit" dieser Quantoren und macht sie "genügsam"(für die minimale Anzahl der passende Zeichen stehend) anstatt der standardmäßigen "Gierigkeit" dieser Quantoren (für die maximale Anzahl der übereinstimmenden Zeichen stehend).</p>
        <p>Zum Beispiel steht der Ausdruck /\d+/ <span style="color:#ff0000;">nicht-global (?)</span> verwendet auf die Zeichenkette "123abc" angewendet für "123", weil der Quantor + (Pluszeichen) "gierig" ist. Der Ausdruck /\d+?/ steht hingegen nur für "1", weil der Quantor + (Pluszeichen) aufgrund der Beeinflussung durch das hintangestellte ? (Fragezeichen) "genügsam" ist.</p>
        <p>Das Fragezeichen wird auch bei <span style="color:#ff0000;"><em>lookahead assertions</em> (?)</span> <span style="color:#ff0000;">(vorausgreifenden Zusicherungen)</span> eingesetzt, die in dieser Tabelle unter x(?=y) und x(?!y) beschrieben sind.</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-dot" id="special-dot" name="special-dot"><code>.</code></a></td>
      <td>
        <p>Der Punkt steht für ein einzelnes Zeichen mit Ausnahme des Zeichens für den Zeilenumbruch.</p>
        <p>Zum Beispiel passt <code>/.n/</code> auf "in" und "än" in der Zeichenkette "nur ein Apfel hängt am Baum", jedoch nicht auf das "n" ganz am Anfang.</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-capturing-parentheses" id="special-capturing-parentheses" name="special-capturing-parentheses"><code>(x)</code></a></td>
      <td>
        <p>Steht für "x", also die eingeklammerten Zeichen. Diese werden gespeichert, damit sie an anderer Stelle wieder eingesetzt werden können. Die Klammern werden auch "capturing parentheses" (aufnehmende Klammern) genannt.</p>
        <p>Zum Beispiel steht <code>/(foo)/</code> für "foo" in "foobar" und gleichzeitig wird "foo" gespeichert. Die passenden Zeichen können durch Array-Elemente wieder eingesetzt werden. Dabei steht <code>[1]</code> für die Zeichen des ersten Klammerpaars, <code>[2]</code> für die Zeichen des zweiten Paars usw.</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-non-capturing-parentheses" id="special-non-capturing-parentheses" name="special-non-capturing-parentheses"><code>(?:x)</code></a></td>
      <td>Steht für&nbsp; "x", aber die Übereinstimmung wird nicht gespeichert. Diese Klammern werden auch als "non-capturing parentheses" bezeichnet. Die übereinstimmenden Zeichen können nicht wieder eingesetzt werden und die Array-Elemente <code>[1]</code>, ..., <code>[n]</code> finden keine Anwendung.</td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-lookahead" id="special-lookahead" name="special-lookahead"><code>x(?=y)</code></a></td>
      <td>
        <p>Steht für "x", jedoch nur wenn "x" vor "y" steht. Dies wird als <span style="color:#ff0000;">"lookahead" (Vorgriff)</span> bezeichnet.</p>
        <p>Zum Beispiel passt <code>/Jack(?=Sprat)/</code> auf "Jack" nur dann, wenn "Sprat" dahinter steht. Der Ausdruck <code>/Jack(?=Sprat|Frost)/</code> passt auf "Jack" nur dann, wenn dahinter "Sprat" oder "Frost" steht. Doch weder "Sprat" noch "Frost" ist Teil des übereinstimmenden Ergenisses.</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-negated-look-ahead" id="special-negated-look-ahead" name="special-negated-look-ahead"><code>x(?!y)</code></a></td>
      <td>
        <p>Matches 'x' only if 'x' is not followed by 'y'. This is called a negated lookahead.</p>
        <p>For example, <code>/\d+(?!\.)/</code> matches a number only if it is not followed by a decimal point. The regular expression <code>/\d+(?!\.)/.exec("3.141")</code> matches '141' but not '3.141'.</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-or" id="special-or" name="special-or"><code>x|y</code></a></td>
      <td>
        <p>Matches either 'x' or 'y'.</p>
        <p>For example, <code>/green|red/</code> matches 'green' in "green apple" and 'red' in "red apple."</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-quantifier" id="special-quantifier" name="special-quantifier"><code>{n}</code></a></td>
      <td>
        <p>Where <code>n</code> is a positive integer. Matches exactly <code>n</code> occurrences of the preceding character.</p>
        <p>For example, <code>/a{2}/</code> doesn't match the 'a' in "candy," but it matches all of the a's in "caandy," and the first two a's in "caaandy."</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-quantifier-range" id="special-quantifier-range" name="special-quantifier-range"><code>{n,m}</code></a></td>
      <td>
        <p>Where <code>n</code> and <code>m</code> are positive integers. Matches at least <code>n</code> and at most <code>m</code> occurrences of the preceding character. When either <code>n</code> or <code>m</code> is zero, it can be omitted.</p>
        <p>For example, <code>/a{1,3}/</code> matches nothing in "cndy", the 'a' in "candy," the first two a's in "caandy," and the first three a's in "caaaaaaandy" Notice that when matching "caaaaaaandy", the match is "aaa", even though the original string had more a's in it.</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-character-set" id="special-character-set" name="special-character-set"><code>[xyz]</code></a></td>
      <td>
        <p>A character set. Matches any one of the enclosed characters. You can specify a range of characters by using a hyphen. Special characters (such as the dot (<code>.</code>) and the asterisk (<code>*</code>)) do not have any special meaning inside a character set. They need not be escaped. Escape sequences also work.</p>
        <p>For example, <code>[abcd]</code> is the same as <span style="font-family: monospace;">[</span><code>a-d]</code>. They match the 'b' in "brisket" and the 'c' in "city". <code>/[a-z.]+/</code> and <code>/[\w.]+/</code> both match everything in "test.i.ng".</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-negated-character-set" id="special-negated-character-set" name="special-negated-character-set"><code>[^xyz]</code></a></td>
      <td>
        <p>A negated or complemented character set. That is, it matches anything that is not enclosed in the brackets. You can specify a range of characters by using a hyphen. Everything that works in the normal character set also works here.</p>
        <p>For example, <code>[^abc]</code> is the same as <code>[^a-c]</code>. They initially match 'r' in "brisket" and 'h' in "chop."</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-backspace" id="special-backspace" name="special-backspace"><code>[\b]</code></a></td>
      <td>Matches a backspace (U+0008). (Not to be confused with <code>\ b</code>.)</td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-word-boundary" id="special-word-boundary" name="special-word-boundary"><code>\b</code></a></td>
      <td>
        <p>Matches a word boundary. A word boundary matches the position where a word character is not followed or preceeded by another word-character. Note that a matched word boundary is not included in the match. In other words, the length of a matched word boundary is zero. (Not to be confused with <code>[\b]</code>.)</p>
        <p>Examples:<br />
          <code>/\bmoo/</code> matches the 'm' in "moon" ;<br />
          <code>/oo\b/</code> does not match the 'oo' in "moon", because 'oo' is followed by 'n' which is a word character;<br />
          <code>/oon\b/</code> matches the 'oon' in "moon", because 'oon' is the end of the string, thus not followed by a word character;<br />
          <code>/\w\b\w/</code> will never match anything, because a word character can never be followed by both a non-word and a word character.</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-non-word-boundary" id="special-non-word-boundary" name="special-non-word-boundary"><code>\B</code></a></td>
      <td>
        <p>Matches a non-word boundary. This matches a position where the previous and next character are of the same type: Either both must be words, or both must be non-words. The beginning and end of a string are considered non-words.</p>
        <p>For example, <code>/\B../</code> matches 'oo' in "noonday" (, and <code>/y\B./</code> matches 'ye' in "possibly yesterday."</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-control" id="special-control" name="special-control"><code>\c<em>X</em></code></a></td>
      <td>
        <p>Where <em>X</em> is a character ranging from A to Z. Matches a control character in a string.</p>
        <p>For example, <code>/\cM/</code> matches control-M (U+000D) in a string.</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-digit" id="special-digit" name="special-digit"><code>\d</code></a></td>
      <td>
        <p>Matches a digit character. Equivalent to <code>[0-9]</code>.</p>
        <p>For example, <code>/\d/</code> or <code>/[0-9]/</code> matches '2' in "B2 is the suite number."</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-non-digit" id="special-non-digit" name="special-non-digit"><code>\D</code></a></td>
      <td>
        <p>Matches any non-digit character. Equivalent to <code>[^0-9]</code>.</p>
        <p>For example, <code>/\D/</code> or <code>/[^0-9]/</code> matches 'B' in "B2 is the suite number."</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-form-feed" id="special-form-feed" name="special-form-feed"><code>\f</code></a></td>
      <td>Matches a form feed (U+000C).</td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-line-feed" id="special-line-feed" name="special-line-feed"><code>\n</code></a></td>
      <td>Matches a line feed (U+000A).</td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-carriage-return" id="special-carriage-return" name="special-carriage-return"><code>\r</code></a></td>
      <td>Matches a carriage return (U+000D).</td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-white-space" id="special-white-space" name="special-white-space"><code>\s</code></a></td>
      <td>
        <p>Matches a single white space character, including space, tab, form feed, line feed. Equivalent to <code>[ \f\n\r\t\v​\u00A0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004​ \u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​\u2028\u2029​ \u202f\u205f​\u3000]</code>.</p>
        <p>For example, <code>/\s\w*/</code> matches ' bar' in "foo bar."</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-non-white-space" id="special-non-white-space" name="special-non-white-space"><code>\S</code></a></td>
      <td>
        <p>Matches a single character other than white space. Equivalent to <code>[^ \f\n\r\t\v​\u00A0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004​ \u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​\u2028\u2029​ \u202f\u205f​\u3000]</code>.</p>
        <p>For example, <code>/\S\w*/</code> matches 'foo' in "foo bar."</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-tab" id="special-tab" name="special-tab"><code>\t</code></a></td>
      <td>Matches a tab (U+0009).</td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-vertical-tab" id="special-vertical-tab" name="special-vertical-tab"><code>\v</code></a></td>
      <td>Matches a vertical tab (U+000B).</td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-word" id="special-word" name="special-word"><code>\w</code></a></td>
      <td>
        <p>Matches any alphanumeric character including the underscore. Equivalent to <code>[A-Za-z0-9_]</code>.</p>
        <p>For example, <code>/\w/</code> matches 'a' in "apple," '5' in "$5.28," and '3' in "3D."</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-non-word" id="special-non-word" name="special-non-word"><code>\W</code></a></td>
      <td>
        <p>Matches any non-word character. Equivalent to <code>[^A-Za-z0-9_]</code>.</p>
        <p>For example, <code>/\W/</code> or <code>/[^A-Za-z0-9_]/</code> matches '%' in "50%."</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-backreference" id="special-backreference" name="special-backreference"><code>\<em>n</em></code></a></td>
      <td>
        <p>Where <em>n</em> is a positive integer. A back reference to the last substring matching the <em>n</em> parenthetical in the regular expression (counting left parentheses).</p>
        <p>For example, <code>/apple(,)\sorange\1/</code> matches 'apple, orange,' in "apple, orange, cherry, peach."</p>
      </td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-null" id="special-null" name="special-null"><code>\0</code></a></td>
      <td>Matches a NULL (U+0000) character. Do not follow this with another digit, because <code>\0&lt;digits&gt;</code> is an octal escape sequence.</td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-hex-escape" id="special-hex-escape" name="special-hex-escape"><code>\xhh</code></a></td>
      <td>Matches the character with the code hh (two hexadecimal digits)</td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/de/docs/JavaScript/Guide/Regular_Expressions$edit#special-unicode-escape" id="special-unicode-escape" name="special-unicode-escape"><code>\uhhhh</code></a></td>
      <td>Matches the character with the code hhhh (four hexadecimal digits).</td>
    </tr>
  </tbody>
</table>
<p>&nbsp;</p>
Zu dieser Version zurücksetzen