632 Anhang
Mit regulären Ausdrücken Suchmuster in Strings finden
7. Reguläre Ausdrücke
Der RegExp-Konstruktor
var areaCode = new RegExp(/[0-9]{3}/);
var phoneNumber = new RegExp(/^\d{3}-?\d{4}$/);
Erinnern Sie sich noch an den »Krieg der Stühle«
aus Kapitel 7? Mit diesem Code hat Amy gewonnen.
Das RegExp-Objekt haben wir in diesem Buch schon mehrfach gesehen. »RegExp« steht
für Regular Expression (regulärer Ausdruck). Dies ist eine Art Grammatik, mit der Textmuster
beschrieben werden können. Sie können beispielsweise einen regulären Ausdruck schreiben,
der alle Textstrings findet, die mit »t« beginnen und auf »e« enden, aber keine »u« enthalten.
Reguläre Ausdrücke können schnell sehr komplex werden. Beim ersten Versuch, sie zu lesen,
erscheinen sie einem fast wie eine Aliensprache. Mit einfachen regulären Ausdrücken ist der
Einstieg aber nicht so schwer. Wenn sie Ihnen zusagen, finden Sie die nötigen Details in einer
guten Referenz zum Thema.
/[0-9]{3}/
Dieser Teil passt auf eine beliebige Ziffer zwischen 0
und 9. Mit [ ] definieren Sie eine »Zeichenklasse«. Wir
benutzen sie, um einen bestimmten Bereich aus Zeichen
oder Ziffern anzugeben.
Und hiermit sagen wir, dass drei der
vorangehenden Zeichen gefunden
werden sollen, sprich: drei Ziffern
zwischen 0 und 9.
Das Argument für den
RegExp-Konstruktor ist das
Suchmuster. Wie würden Sie
diese zwei Suchmuster lesen?
/ markiert den Anfang
des regulären Ausdrucks.
/ markiert das Ende
des regulären Ausdrucks.
Das Ganze findet Strings aus drei
Ziffern wie »20
1
« oder »503«.
"201"
Wie hier …
Ein paar reguläre Ausdrücke wollen wir uns jetzt mal ansehen. Um einen
regulären Ausdruck zu erzeugen, übergeben Sie dem RegExp-Konstruktor,
umgeben von zwei Schrägstrichen, ein Suchmuster wie das hier gezeigte:
Der Schlüssel zum Verständnis regulärer Ausdrücke liegt im richtigen
Lesen der Suchmuster. Sie sind der komplexeste Teil der regulären
Ausdrücke. Daher zeigen wir Ihnen hier zwei Beispiele – den Rest müssen
Sie sich selbst aneignen.
Sie sind hier � 633
Was übrig bleibt
var amyHome = "555-1212";
Für die Verwendung eines regulären Ausdrucks brauchen Sie zunächst einen String, der durchsucht werden soll.
var result = amyHome.match(phoneNumber);
Dann wird der reguläre Ausdruck auf den String angewandt,
indem wir die match-Methode am String aufrufen und ihm das
RegExp-Objekt als Argument übergeben.
Das RegExp-Objekt benutzen
Das Ergebnis ist ein Array, das sämtliche Teile des Strings enthält,
auf die das Suchmuster zutraf. Ist das Ergebnis null, traf das
Muster auf keinen Teil des Strings zu.
/^\d{3}-?\d{4}$/
\d steht
für eine
beliebige
Ziffer.
Davon
sollen drei
gefunden
werden.
Findet
null oder
einen Bin-
destrich.
^ steht für
den Anfang
des Strings.
$ steht
für das
Ende des
Strings.
Passt
wieder
auf eine
beliebige
Ziffer.
Und
davon
sollen vier
gefunden
werden.
/ markiert
den Anfang
des regulären
Ausdrucks.
/ markiert
das Ende
des regulären
Ausdrucks.
"555-1212"
"5551212"
Das Ganze findet eine
Telefonnummer aus sieben
Ziffern, die nach der
dritten Ziffer einen
optionalen Bindestrich
enthalten kann.
oder
var invalid = "5556-1212";
var result2 = invalid.match(phoneNumber);
Das Ergebnis in result ist [“555-
1
2
1
2”],
weil das Suchmuster hier auf den gesamten
String in amyHome zutraf.
Der Wert von result2 ist null, weil kein Teil
des Strings in invalid auf das Suchmuster im
regulären Ausdruck passte.
Sobald Sie einen regulären Ausdruck wie phoneNumber haben,
können Sie ihn beliebig oft benutzen, um damit Strings zu finden.
Get JavaScript-Programmierung von Kopf bis Fuß now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.