Читать книгу JavaScript – Das Handbuch für die Praxis - David Flanagan - Страница 46
3.3.5Mustervergleiche
ОглавлениеJavaScript definiert einen Datentyp RegExp, der als regulärer Ausdruck (kurz Regex von Regular Expression) bezeichnet wird und dazu dient, Muster in Textzeichenketten zu beschreiben und zu vergleichen. Der RegExp-Typ gehört nicht zu den grundlegenden Datentypen in JavaScript, aber er weist eine Literalsyntax auf, die der von Zahlen und Strings gleicht, sodass er manchmal wie ein grundlegender Datentyp wirkt. Die Grammatik von Regex-Literalen ist komplex, und die von ihnen definierte API ist nicht trivial. Der Datentyp wird in 11.3 ausführlich beschrieben. Weil Regexes äußerst mächtig sind und häufig bei der Arbeit mit Strings eingesetzt werden, bietet dieser Abschnitt schon einmal einen kurzen Überblick.
Text, der zwischen einem Paar von Schrägstrichen steht, bildet ein Regex-Literal. Nach dem zweiten Schrägstrich kann eine Gruppe von Buchstaben folgen, die die Bedeutung des Musters abwandeln, zum Beispiel:
/^HTML/; // Findet die Buchstaben H T M L am Anfang des Strings.
/[1-9][0-9]*/; // Findet eine Ziffer ungleich null, auf die eine beliebige
// Anzahl weiterer Ziffern folgt.
/\bjavascript\b/i; // Findet das Wort "javascript" ohne Berücksichtigung der
// Groß-/Kleinschreibung.
Für die Arbeit mit regulären Ausdrücken enthält die JavaScript-Standardbibliothek die Klasse RegExp. RegExp-Objekte definieren einige nützliche Methoden, und auch Strings besitzen Methoden, die reguläre Ausdrücke als Argumente akzeptieren, beispielsweise:
let text = "testing: 1, 2, 3"; // Beispieltext.
let pattern = /\d+/g; // Findet alle Vorkommen einer oder
// mehrerer Ziffern.
pattern.test(text) // => true: Es gibt einen Treffer.
text.search(pattern) // => 9: Position des ersten Treffers.
text.match(pattern) // => ["1", "2", "3"]: Das Array mit allen
// Treffern.
text.replace(pattern, "#") // => "testing: #, #, #"
text.split(/\D+/) // => ["","1","2","3"]: An Nicht-Ziffern
// aufgetrennt.