Websiteentwicklung: JavaScript: Objekte: RegExp

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Das RegExp-Objekt für reguläre Ausdrücke[Bearbeiten]

Die  regulären Ausdrücke (Regular Expression, RegExp) erlauben, Zeichenketten mit Mustern zu vergleichen. Damit kann man beispielsweise überprüfen, ob eine E-Mail-Adresse, die in ein Formularfeld eingegeben wurde, eine zulässige Form hat.

Das Objekt RegExp und Reguläre Ausdrücke wurden in JavaScript 1.2 eingeführt,[1] das heißt mit Netscape 4.0 Mitte 1997. Mit Instanzen des RegExp-Objekts können reguläre Ausdrücke verarbeitet werden. Die Eigenschaften des RegEx-Objekts speichern Informationen über die zuletzt mit einem regulären Ausdruck durchgeführte Operation. Reguläre Ausdrücke können insbesondere in vier Methoden des String-Objektes benutzt werden: match(), search(), replace(), und split().

Metazeichen[Bearbeiten]

Metazeichen oder Funktionszeichen, erklärt Wikipedia sinngemäß, sind Zeichen in einer Zeichenkette, die in einem bestimmten Zusammenhang nicht für sich selbst stehen, sondern ähnlich wie Steuerzeichen eine besondere Bedeutung für die Verarbeitung der Daten haben. Für die Definition von regulären Ausdrücken werden solche Zeichen mit besonderer Bedeutung verwendet.

Insbesondere die Zeichen * + ? . ( ) [ ] { } \ / | ^ $ haben in regulären Ausdrücken eine besondere Bedeutung, sollen sie in einem regulären Ausdruck nicht diese besondere Bedeutung haben, sondern als Zeichen selber gesucht werden, so muss man jedem dieser Zeichen einen Rückwärtsstrich "\" voranstellen.

Zeichenklassen[Bearbeiten]

Zeichenklassen stehen für genau ein Zeichen aus einer Menge bestimmter Zeichen. Die gemeinten Zeichen werden im einfachsten Fall nur zwischen eckigen Klammern nebeneinander geschrieben.

Syntax Steht für / bedeutet Beispielkode Beispiel findet
[…] eines der Zeichen zwischen den Klammern /M[ae]n/ Man, Men
/[0-9]/ jede Ziffer
/[a-z]/ jeden Kleinbuchstaben
/[a-zßäöü]/ jeden Kleinbuchstaben inkl. ß und Umlaut
/[A-Z]/ jeden Großbuchstaben
/[a-zA-Z]/ jeden großen oder kleinen Buchstaben
[^…] keines der Zeichen zwischen den Klammern /M[^ae]n/ Min, Mon

Spezielle Metazeichen[Bearbeiten]

Metazeichen Steht für / bedeutet Gleichbedeutend mit Beispielkode Beispiel findet
\d Ziffer von 0-9 (engl. digit character) [0-9] /\d\d\d/ 328
\D Nicht-Ziffer [^0-9] /\D\D/ alles außer Ziffern
\f Seitenvorschubzeichen (engl. form feed)   /\f/  
\n Zeilenvorschubzeichen (engl. new line)   /\n/  
\r Wagenrücklaufzeichen (engl. carriage return)   /\r/  
\t Tabulatorzeichen   /\t/  
\v vertikales Tabulatorzeichen   /\v/  
\s Leerzeichen, Tabulator oder Zeilenumbruch (engl. whitespace character); siehe auch nachfolgende Erklärung zum Begriff „Whitespace“)   /E-Mail\sAdresse/ E-Mail Adresse
\S Nichtleerzeichen   /E-Mail\SAdresse/ E-Mail-Adresse
\w Buchstaben, Ziffer oder Unterstrich (engl. word character) [a-zA-Z0-9_] /\w\w/ _A
\W keinen Buchstaben, keine Ziffer und keinen Unterstrich [^a-zA-Z0-9_] /\W/ %
. jedes Zeichen, außer Zeilenumbruch [^\x0A\x0D\u2028\u2029] /./ A
() Findet und merkt es sich intern   /(Erde)/  

Mit dem aus dem Englischen entlehnten Begriff Whitespace (Plural: Whitespaces) bezeichnen JavaScript-Programmierer jedes der folgenden Zeichen: das Leerzeichen, das Tabulatorzeichen, das vertikale Tabulatorzeichen, das Zeichen für den Zeilenwechsel (engl. new line), für den Wagenrücklauf (engl. carriage return) und für den Blattvorschub (engl. line feed).

Anker[Bearbeiten]

Anker schränken ein, wo in der durchsuchten Zeichenkette das gesuchte Zeichenmuster stehen darf.

Metazeichen Steht für Beispielkode Beispiel findet Erläuterung
\b Wortgrenze
(engl. word boundary)
/\bMathe/ "Mathe", "Mathearbeit", … Die Wortgrenze ist selber kein Zeichen. Ein Wort im Sinne der regulären Ausdrücke beginnt nach einem Zeichen aus der Klasse [^a-zA-Z0-9_] oder nach dem Zeichenkettenbeginn und endet vor einem Zeichen der erwähnten Klasse bzw. vor dem Zeichenkettenende.
\B Nicht-Wortgrenze /\Bee/ "Meer", "Lee", …  
/\bMathe\B/ "Mathe" in z.B. Mathematik und Mathelehrer  
^ Beginn einer Zeichenkette /^Montag/    
$ Ende einer Zeichenkette /Ende\.$/ "Ende." \. steht hier für den Punkt als Zeichen, da der Punkt ohne vorangestellten Schrägstich für ein beliebiges Zeichen außer den Zeilenumbruch steht.

Quantifikatoren[Bearbeiten]

Quantifikatoren sind Zeichen, die angeben, wie oft ein Zeichen vorkommen darf. Der Quantifikator steht immer hinter dem Zeichen, dessen Häufigkeit er vorgibt. Statt des Begriffs Quantifikator werden gelegentlich die Begriffe Multiplikator, Replikator, Vervielfacher oder Quantifier verwendet.

Quantifikator Steht für / bedeutet Beispielkode Beispiel findet Erläuterung
? keinmal oder genau einmal /\d?/ "" oder 1 \d steht hierbei für eine Ziffer (0-9)
/\bTipp?\b/ "Tip" und "Tipp" \b steht hierbei für eine Wortgrenze
* kein-, ein- oder mehrmals /\d*/ "", 1 oder 1234 \d, eine Ziffer (0-9)
+ ein- oder mehrmals /\d+/ 1 oder 1234
{n} n-mal, wobei n eine ganze Zahl ist. /\b\d{5}\b/ eine fünfstellige Zahl \b steht hierbei für eine Wortgrenze

Modifikatoren[Bearbeiten]

Modifikator Steht für / bedeutet Beispielkode Beispiel findet
//g global, so oft wie es vorkommt /ee/g  
//i case insensitiv, unabhängig von der Groß-/Kleinschreibung /me/i  

Beispiel[Bearbeiten]

Im Beispiel wird jedes Zeichen, das weder eine Ziffer (0-9) noch ein Komma ist, durch einen Leerstring ersetzt. Dadurch werden unter anderem alle Buchstaben gelöscht. Zum Ersetzen dient hier die Methode replace() des Objekts String.

<html>
<head>
  <script type="application/javascript">
  <!--
      function nurZahlen(el) {
          el.value = el.value.replace(/[^,\d]/g, "");
      }
  //-->
  </script>
</head>
<body>
  <form action="#">
    <fieldset>
      <legend>RegExp-Beispiel - Nur Ganzzahlen oder Kommazahlen ohne Vorzeichen werden akzeptiert</legend>
      <input type="text" onkeyup="nurZahlen(this)" name="eingabe" size="20" value="" style="text-align:right;">
    </fieldset>
  </form>
</body>
</html>

Literatur über Reguläre Ausdrücke[Bearbeiten]

  • Tony Stubblebine: Regular Expressions Pocket Reference. 2. Auflage. O'Reilly, 2007, ISBN 978-0596514273 (Beschreibt das Thema auch für andere gängige Sprachen.).

Einzelnachweise[Bearbeiten]

  1. Stubblebine a.a.O., S. 77