This page has been robot translated, sorry for typos if any. Original content here.

Crib bei regulären Ausdrücken JavaScript

Nach Thema:


Allgemeine Beschreibung

Reguläre Ausdrücke sind Muster zum Suchen nach bestimmten Zeichenkombinationen in Textzeichenfolgen (eine solche Suche wird als Übereinstimmung mit einem Muster bezeichnet). Es gibt zwei Möglichkeiten, Variablen regulären Ausdrücken zuzuweisen, nämlich:
Verwenden des Objektinitialisierers: var re = / pattern / switch?
Verwenden des RegExp-Konstruktors: var re = new RegExp ("pattern" [, "switch"]?).
Hier ist Muster ein regulärer Ausdruck, und Schalter ist optionale Suchoptionen.

Objektinitialisierer, z. B. var re = / ab + c / , sollten verwendet werden, wenn der Wert des regulären Ausdrucks unverändert bleibt, während das Skript ausgeführt wird. Solche regulären Ausdrücke werden beim Laden des Skripts kompiliert und sind daher schneller.

Der Aufruf des Konstruktors, z. B. var re = new RegExp ("ab + c") , sollte in Fällen verwendet werden, in denen sich der Wert der Variablen ändert. Wenn Sie den regulären Ausdruck mehrmals verwenden möchten, ist es sinnvoll, ihn mithilfe der Kompiliermethode zu kompilieren, um Muster effizienter zu finden.

Beim Erstellen eines regulären Ausdrucks ist zu beachten, dass das Einschließen in Anführungszeichen die Verwendung von Escape-Sequenzen wie bei jeder anderen Zeichenfolgenkonstante erfordert. Zum Beispiel sind die folgenden zwei Ausdrücke äquivalent:

	 var re = / \ w + / g;
	 var re = neue RegExp ("\\ w +", "g");  // Die Zeile "\" sollte durch "\\" ersetzt werden
	

Hinweis: Der reguläre Ausdruck darf nicht leer sein: Zwei Zeichen // hintereinander setzen den Beginn des Kommentars. Verwenden Sie daher den Ausdruck /.?/, um einen leeren regulären Ausdruck anzugeben.

Reguläre Ausdrücke werden von den execEx- und test-Methoden des RegExp- Objekts und den Methoden match, replace, search und split des String-Objekts verwendet. Wenn wir nur überprüfen müssen, ob diese Zeichenfolge eine Teilzeichenfolge enthält, die dem Muster entspricht, werden die Test- oder Suchmethoden verwendet. Wenn wir einen Teilstring (oder Teilstrings) extrahieren müssen, der dem Muster entspricht, müssen wir die Methoden exec oder match verwenden. Die Methode replace sucht nach einer gegebenen Teilzeichenkette und ersetzt sie durch eine andere Zeichenkette. Mit der Methode split können Sie eine Zeichenkette in mehrere Substrate auf der Basis eines regulären Ausdrucks oder einer gewöhnlichen Textzeichenfolge aufteilen. Weitere Informationen zur Verwendung regulärer Ausdrücke finden Sie in der Beschreibung der entsprechenden Methoden.

Reguläre Ausdruckssyntax

Ein regulärer Ausdruck kann aus gewöhnlichen Zeichen bestehen; In diesem Fall wird die angegebene Kombination von Zeichen in der Zeichenfolge übereinstimmen. Zum Beispiel entspricht der Ausdruck / com / den ausgewählten Teilzeichenketten in den folgenden Zeilen: "Klumpen", "Gourmet", "Marine-Kommandant". Die Flexibilität und Leistung regulärer Ausdrücke ermöglicht jedoch die Verwendung von Sonderzeichen, die in der folgenden Tabelle aufgeführt sind.

Sonderzeichen in regulären Ausdrücken:

\ - Für Charaktere, die normalerweise wörtlich behandelt werden, bedeutet das, dass das nächste Zeichen speziell ist. Beispielsweise entspricht / n / dem Buchstaben n und / \ n / dem Zeilenvorschubzeichen. Für Charaktere, die normalerweise als besonders behandelt werden, bedeutet dies, dass der Charakter wörtlich verstanden werden muss. Zum Beispiel bezeichnet / ^ / den Anfang der Zeile und / \ ^ / entspricht einfach dem Zeichen ^. / \\ / entspricht dem umgekehrten Schrägstrich \.

^ - Entspricht dem Anfang der Zeile.

$ - Entspricht dem Ende der Zeile.

* - Entspricht der Wiederholung des vorherigen Zeichens Null oder mehrmals.

+ - Entspricht der Wiederholung des vorherigen Zeichens ein oder mehrere Male.

? - Entspricht der Wiederholung des vorherigen Zeichens null oder einmal.

. - Entspricht einem beliebigen Zeichen außer dem Newline-Zeichen.

(Muster) - Entspricht der Musterlinie und merkt sich das gefundene Match.

(?: pattern) - Entspricht dem Zeichenfolgenmuster, erinnert sich jedoch nicht an die gefundene Übereinstimmung. Wird zum Gruppieren von Teilen eines Beispiels verwendet, zum Beispiel / to (?: T | scale) / ist ein kurzer Eintrag des Ausdrucks / cat / cat /.

(? = Muster) - Die Übereinstimmung mit "Vorausschau" tritt auf, wenn die Musterlinie übereinstimmt, ohne sich an die gefundene Übereinstimmung zu erinnern. Beispiel: / Windows (? = 95 | 98 | NT | 2000) / entspricht "Windows" in der Zeile "Windows 98", stimmt jedoch nicht mit der Zeile "Windows 3.1" überein. Nach dem Matching wird die Suche von der Position aus fortgesetzt, die dem gefundenen Match folgt, ohne das Vorwärts-Look zu berücksichtigen.

(?! Muster) - Die Übereinstimmung mit "Vorausschau" tritt auf, wenn die Musterlinie nicht übereinstimmt, ohne sich an die gefundene Übereinstimmung zu erinnern. Beispiel: / Windows (?! 95 | 98 | NT | 2000) / entspricht "Windows" in der Zeichenfolge "Windows 3.1", stimmt aber in der Zeichenfolge "Windows 98" nicht überein. Nach dem Matching wird die Suche von der Position aus fortgesetzt, die dem gefundenen Match folgt, ohne das Vorwärts-Look zu berücksichtigen.

x | y - Entspricht x oder y.

{n} - n ist eine nichtnegative Zahl. Entspricht genau n Vorkommen des vorherigen Zeichens.

{n,} - n ist eine nichtnegative Zahl. Entspricht n oder mehr Vorkommen des vorherigen Zeichens. / x {1,} / entspricht / x + /. / x {0,} / entspricht / x * /.

{n, m} - n und m ist eine nichtnegative Zahl. Entspricht mindestens n und nicht mehr als m Vorkommen des vorherigen Zeichens. / x {0,1} / entspricht / x? /.

[xyz] - Stimmt mit einem beliebigen Zeichen aus eckigen Klammern überein.

[^ xyz] - Entspricht einem beliebigen Zeichen außer den in eckigen Klammern eingeschlossenen Zeichen.

[az] - Entspricht einem beliebigen Zeichen im angegebenen Bereich.

[^ az] - Entspricht einem anderen Zeichen als dem angegebenen Bereich.

\ b - Entspricht der Wortgrenze, d. h. der Position zwischen einem Wort und einem Leerzeichen oder einem Zeilenvorschub.

\ B - Entspricht einer anderen Position als der Wortgrenze.

\ cX - Entspricht dem Zeichen Strg + X. Zum Beispiel ist / \ cI / äquivalent zu / \ t /.

\ d - Entspricht der Ziffer. Es entspricht [0-9].

\ D - Entspricht einem nicht numerischen Zeichen. Es entspricht [^ 0-9].

\ f - Entspricht dem Umsetzungszeichen des Formats (FF).

\ n - Entspricht dem Zeilenvorschubzeichen (LF).

\ r - Entspricht dem Wagenrücklaufzeichen (CR).

\ s - Entspricht dem Leerzeichen. Entspricht / [\ f \ n \ r \ t \ v] /.

\ S - Entspricht einem beliebigen Nicht-Leerzeichen-Zeichen. Entspricht / [^ \ f \ n \ r \ t \ v] /.

\ t - Entspricht dem Tabulatorzeichen (HT).

\ v - Entspricht dem Zeichen für die vertikale Registerkarte (VT).

\ w - Entspricht einem Buchstaben, einer Zahl oder einem Unterstrich. Äquivalent zu / [A-Za-z0-9_] /.

\ W - Entspricht einem beliebigen Zeichen außer Buchstaben, Zahlen oder Unterstrichen. Entspricht / [^ A-Za-z0-9_] /.

\ n n ist eine positive Zahl. Entspricht der n-ten gespeicherten Teilzeichenfolge. Berechnet durch Zählen der linken Klammern. Wenn die linke Klammer vor diesem Zeichen kleiner als n ist, entspricht sie \ 0n.

\ N ist eine Oktalzahl nicht größer als 377. Sie entspricht dem Zeichen mit dem Oktalcode n. Zum Beispiel ist / \ 011 / äquivalent zu / \ t /.

\ xn n ist eine Hexadezimalzahl, die aus zwei Ziffern besteht. Entspricht einem Zeichen mit Hexadezimalcode n. Zum Beispiel ist / \ x31 / äquivalent zu / 1 /.

\ un n ist eine Hexadezimalzahl, die aus vier Ziffern besteht. Entspricht einem Unicode-Zeichen mit hexadezimalem n. Zum Beispiel ist / \ u00A9 / äquivalent zu / c /.

Reguläre Ausdrücke werden ähnlich wie der Rest der JavaScript-Ausdrücke ausgewertet, d. H. Unter Berücksichtigung der Priorität der Operationen: Operationen, die eine höhere Priorität haben, werden zuerst ausgeführt. Wenn die Operationen die gleiche Priorität haben, werden sie von links nach rechts ausgeführt. Die folgende Tabelle zeigt die Liste der regulären Ausdrucksoperationen in absteigender Reihenfolge der Priorität. Die Operationen in einer Zeile der Tabelle haben die gleiche Priorität.

Operationen:
  \
 () (? :) (? =) (?!) []
	 * +?  .  {n} {n,} {n, m}
	 ^ $ \ Metazeichen
	 | |
	

Suchoptionen

Beim Erstellen eines regulären Ausdrucks können wir zusätzliche Suchoptionen angeben:
ich (ignoriere den Fall). Unterscheiden Sie nicht zwischen Groß- und Kleinbuchstaben.
g (globale Suche). Globale Suche nach allen Vorkommen eines Musters.
m (mehrzeilig). Mehrzeilige Suche
Jede Kombination dieser drei Optionen, zum Beispiel ig oder gim.

Beispiel:

	 var s = "Erlernen der JavaScript-Sprache";
	 var re = / JAVA /;
	 var result = re.test (s)?  "" ":" "nicht";
	 document.write ("String" "+ s + Ergebnis +" entspricht dem Muster "+ re);
	

Da reguläre Ausdrücke zwischen Groß- und Kleinbuchstaben unterscheiden, wird in diesem Beispiel der Text im Browserfenster angezeigt:

Die Zeichenfolge "JavaScript-Sprache lernen" stimmt nicht mit dem Beispiel / JAVA /

Ersetzen wir jetzt die zweite Zeile des Beispiels durch var re = / JAVA / i;, dann wird der Text angezeigt:

Die Zeichenfolge "JavaScript-Sprache lernen" entspricht dem Beispiel / JAVA / i


Betrachten Sie nun die globale Suchoption. Es wird normalerweise von der Ersetzungsmethode verwendet, wenn nach einem Muster gesucht und die gefundene Teilkette durch eine neue ersetzt wird. Tatsache ist, dass diese Methode standardmäßig nur den ersten gefundenen Teilstring ersetzt und das Ergebnis zurückgibt. Stellen Sie sich das folgende Szenario vor:

	 var s = "Wir schreiben Skripte in JavaScript," +
	 "Aber JavaScript ist nicht die einzige Skriptsprache.";
	 var re = / JavaScript /;
	 document.write (s.replace (re, "VBScript"));
	

Es gibt Text aus, der eindeutig nicht mit dem gewünschten Ergebnis übereinstimmt: Wir schreiben Skripte in VBScript, aber JavaScript ist nicht die einzige Skriptsprache. Damit alle Vorkommen des Strings "JavaScript" durch "VBScript" ersetzt werden, müssen wir den Wert des regulären Ausdrucks in var re = / JavaScript / g ändern ; . Dann wird die resultierende Zeichenfolge wie folgt aussehen:

Wir schreiben Skripte in VBScript, aber VBScript ist nicht die einzige Skriptsprache.

Schließlich können Sie mit der Option für mehrzeilige Suche ein Muster eines Zeichenfolgenausdrucks anpassen, der aus mehreren Textzeilen besteht, die durch Zeilenumbruchzeichen verbunden sind. Standardmäßig wird der Mustervergleich beendet, wenn ein Zeilenumbruchzeichen gefunden wird. Diese Option überwindet die angegebene Einschränkung und bietet eine Beispielsuche über die gesamte Quellzeichenfolge. Es wirkt sich auch auf die Interpretation einiger Sonderzeichen in regulären Ausdrücken aus: Normalerweise wird das Zeichen ^ nur dem ersten Element der Zeichenfolge zugeordnet. Wenn die Option für die mehrzeilige Suche aktiviert ist, wird sie auch mit jedem Zeilenelement verglichen, dem ein Zeilenumbruchzeichen vorangestellt ist. Normalerweise stimmt das $ -Zeichen nur mit dem letzten Element der Zeichenfolge überein. Wenn die Option für die mehrzeilige Suche aktiviert ist, wird sie auch mit einer beliebigen Werbebuchung verglichen, bei der es sich um ein Zeilenumbruchzeichen handelt.

Gespeicherte gefundene Teilstrings speichern

Wenn ein Teil des regulären Ausdrucks in Klammern eingeschlossen ist, wird der entsprechende Teilstring zur späteren Verwendung gespeichert. Um auf gespeicherte Teilzeichenfolgen zuzugreifen, verwenden Sie die Eigenschaften $ 1,:, $ 9 des RegExp-Objekts oder Elemente des Arrays, die von den Methoden exec und match zurückgegeben werden. Im letzteren Fall ist die Anzahl der gefundenen und gespeicherten Teilstrings nicht begrenzt.

Das folgende Skript verwendet die Methode replace, um Wörter in einer Zeichenfolge neu anzuordnen. Um den gefundenen Text zu ersetzen, werden die Eigenschaften $ 1 und $ 2 verwendet.

	 var re = / (\ w +) \ s (\ w +) / i;
	 var str = "Michail Bulgakow";
	 document.write (str.replace (re, "$ 2, $ 1"))
	

Dieses Skript zeigt den Text im Browserfenster an:

Bulgakow, Michail

seit \ w = [A-Za-z0-9_], dann funktionieren die russischen Buchstaben nicht. Wenn wir russische Buchstaben verwenden wollen, müssen wir den Code leicht modifizieren:

	 var re = / ([а-я] +) \ s ([а-я] +) / i; 
	 var str = "Michail Bulgakow"; 
	 document.write (str.replace (re, "$ 2, $ 1"));  // Bulgakow, Michail
	

Dieses Skript zeigt den Text im Browserfenster an:

Bulgakow, Michail

Einleitung

Grundlegende Konzepte

Reguläre Ausdrücke sind ein leistungsfähiges Werkzeug zur Verarbeitung eingehender Daten. Eine Aufgabe, die ersetzt oder nach Text gesucht werden muss, kann mit Hilfe dieser "Sprache in der Sprache" wunderbar gelöst werden. Und obwohl die Verwendung von serverseitigen Sprachen die maximale Wirkung von regulären Ausdrücken erzielen kann, sollten Sie die Möglichkeiten dieser Anwendung auf der Clientseite nicht unterschätzen.

Ein regulärer Ausdruck ist ein Werkzeug zur Verarbeitung von Zeichenfolgen oder einer Zeichenfolge, die eine Textvorlage definiert.

Modifikator - entwickelt, um den regulären Ausdruck zu "instruieren".
Metazeichen sind Sonderzeichen, die als Befehle für die reguläre Ausdruckssprache dienen.

Ein regulärer Ausdruck wird als gewöhnliche Variable angegeben. An Stelle der Anführungszeichen wird nur ein Schrägstrich verwendet. Beispiel:

  var reg = / reg_ausdruck / 

Unter den einfachsten Vorlagen werden wir solche Vorlagen verstehen, die keine speziellen Symbole benötigen.

Nehmen wir an, unsere Aufgabe ist es, alle Buchstaben "p" (klein und groß) durch den lateinischen Großbuchstaben "R" im Ausdruck Reguläre Ausdrücke zu ersetzen.

Erstellen Sie eine Vorlage var reg = / p / und verwenden Sie die Methode replace

	 <Skriptsprache = "JavaScript">
		 var str = "Reguläre Ausdrücke"
		 var reg = / p /
		 var result = str.replace (reg, "R")
		 document.write (Ergebnis)
	 </ script>
	

Als Ergebnis erhalten wir die Zeile "REGELMÄSSIGE Ausdrücke", die Ersetzung trat nur beim ersten Auftreten des Buchstabens "p" mit dem Fall auf. Aber unter den Bedingungen unseres Problems passt dieses Ergebnis nicht ... Hier brauchen wir die Modifikatoren "g" und "i", die einzeln oder zusammen verwendet werden können.
Diese Modifikatoren werden am Ende des regulären Ausdrucksmusters nach dem Schrägstrich platziert und haben die folgenden Werte: Modifikator "g" - setzt die Suche in der Zeile als "global", d. in unserem Fall wird die Ersetzung für alle Vorkommen des Buchstabens "p" erfolgen. Jetzt sieht die Vorlage so aus: var reg = / p / g , ersetzt sie in unserem Code

	 <Skriptsprache = "JavaScript">
		 var str = "Reguläre Ausdrücke"
		 var reg = / p / g
		 var result = str.replace (reg, "R")
		 document.write (Ergebnis)
	 </ script>
	
Wir bekommen die Zeile 'Regulatory Expressions'.

Der Modifikator "i" - setzt die Suche in der Zeile ohne Rücksicht auf den Fall und fügt diesen Modifikator zu unserer Vorlage hinzu. Var reg = / p / gi, nach der Ausführung des Skripts erhalten wir das gewünschte Ergebnis unserer Aufgabe - 'Einstellbare Ausdrücke'.

Sonderzeichen (Metazeichen)

Metazeichen geben den Typ der Zeichen der Suchzeichenfolge, die Methode zum Umgeben der Suchzeichenfolge im Text sowie die Anzahl der Zeichen eines einzelnen Typs im angezeigten Text an. Metazeichen können daher in drei Gruppen unterteilt werden:

Übereinstimmende Metazeichen
Quantitative Metazeichen.
Metazeichen der Positionierung.
Übereinstimmende Metazeichen zuordnen

\ b die Wortgrenze, gibt die Bedingung an, unter der das Muster am Anfang oder am Ende der Wörter ausgeführt werden soll.

\ B ist keine Wortgrenze, sie gibt eine Bedingung an, unter der das Muster nicht am Anfang oder Ende eines Wortes ausgeführt wird.

\ d ist eine Ziffer von 0 bis 9.

\ D ist keine Ziffer.

\ s ein einzelnes leeres Zeichen, das mit dem Leerzeichen übereinstimmt.

\ S ist ein einzelnes, nicht leeres Zeichen, ein beliebiges Zeichen außer einem Leerzeichen.

\ w Buchstabe, Zahl oder Unterstrich.

\ W ist kein Buchstabe, eine Zahl oder ein Unterstrich.

. ein beliebiges Zeichen, beliebige Zeichen, Buchstaben, Zahlen usw.

[] Zeichensatz, gibt die Bedingung an, unter der das Muster ausgeführt werden soll, wobei die Zeichen in eckigen Klammern übereinstimmen müssen.

[^] eine Menge nicht eintreffender Zeichen, gibt eine Bedingung an, unter der die Vorlage nicht mit einer Übereinstimmung der in eckigen Klammern eingeschlossenen Zeichen ausgeführt werden soll.

Quantitative Metazeichen

* Null und mehrmals.

? Null oder einmal

+ Ein oder mehrere Male.

{n} genau n mal.

{n,} n oder mehrmals.

{n, m} mindestens n mal, aber nicht mehr als m mal.

Metazeichen der Positionierung

^ am Anfang der Zeile.

$ am Ende der Zeile.

Einige Methoden zum Arbeiten mit Vorlagen

Ersetzen - wir haben diese Methode bereits am Anfang des Artikels verwendet, es ist beabsichtigt, nach einem Muster zu suchen und den gefundenen Teilstring durch einen neuen Teilstring zu ersetzen.

test - Diese Methode überprüft, ob eine Übereinstimmung in der Zeichenfolge im Verhältnis zum Muster vorliegt, und gibt false zurück, wenn die Musterübereinstimmung fehlschlägt, andernfalls true.

Beispiel:

	 <Skriptsprache = "JavaScript">
		 var str = "JavaScript"
		 var reg = / PHP /
		 var result = reg.test (str)
		 document.write (Ergebnis)
	 </ script>
	

wird falsch als Ergebnis ausgeben; Die Zeichenfolge "JavaScript" ist nicht gleich der Zeichenfolge "PHP".

Außerdem kann die Testmethode jede andere vom Programmierer angegebene Zeichenfolge anstelle von true oder false zurückgeben.
zum Beispiel:

	 <Skriptsprache = "JavaScript">
		 var str = "JavaScript"
		 var reg = / PHP /
		 var result = reg.test (str)?  "String Matched": "String stimmt nicht überein"
		 document.write (Ergebnis)
	 </ script>
	
In diesem Fall ist das Ergebnis die Zeichenfolge 'Die Zeichenfolge stimmt nicht überein'.

exec - Diese Methode vergleicht die Zeichenfolge mit dem von der Vorlage angegebenen Muster. Wenn der Musterabgleich fehlschlägt, wird null zurückgegeben. Andernfalls ist das Ergebnis ein Array von Teilstrings, die dem angegebenen Muster entsprechen. / * Das erste Element des Arrays entspricht der ursprünglichen Zeichenfolge, die das angegebene Muster erfüllt * /
zum Beispiel:

	 <Skriptsprache = "JavaScript">
		 var reg = / (\ d +). (\ d +). (\ d +) /
		 var arr = reg.exec ("Ich wurde am 15. September 1980 geboren")
		 document.write ("Geburtsdatum:", arr [0], "<br>")
		 document.write ("Geburtstag:", arr [1], "<br>")
		 document.write ("Geburtsmonat:", arr [2], "<br>")
		 document.write ("Geburtsjahr:", arr [3], "<br>")
	 </ script>
	

Das Ergebnis ist vier Zeilen:
Geburtsdatum: 15.09.1980
Geburtstag Geburtstag unbekannt
Geburtsmonat: 09
Geburtsjahr: 1980

Fazit

In diesem Artikel werden nicht alle Funktionen und Vorzüge von regulären Ausdrücken angezeigt. Für ein eingehendes Studium dieses Problems empfehle ich Ihnen, das RegExp-Objekt zu untersuchen. Ich möchte auch darauf achten, dass sich die Syntax regulärer Ausdrücke weder in JavaScript noch in PHP unterscheidet. Zum Beispiel, um die Richtigkeit der Eingabe von E-Mail zu überprüfen, ein regulärer Ausdruck, der für JavaScript, das für PHP wird gleich aussehen
/[0-9a-z_]+@[0-9a-z_^.]+.[az]{2,3}/i.

Reguläre Ausdrücke sind eine Art Muster, um bestimmte Kombinationen von Zeichen in Strings zu finden, wobei reguläre Ausdrücke in Schrägstrichen eingeschlossen sind. Die Literale regulärer Ausdrücke sind unten aufgeführt.

Literale

Literale Beschreibung
\ Es ist Teil von Sonderzeichen und lässt den Interpreter erkennen, dass das nächste Zeichen kein Literal ist. Wird vor oktalen Zeichencodes verwendet, um gespeicherte Unterausdrücke aus dem Speicher zu extrahieren und ein Literal im regulären Ausdruck zu verwenden.
^ Beginn der Linie
$ Ende der Zeile
* Bedeutet, dass das vorhergehende Zeichen auf der Linie viele Male treffen oder sich nicht treffen sollte
+ Bedeutet, dass das vorhergehende Zeichen einmal oder mehrmals in der Zeile vorkommen sollte
? Bedeutet, dass sich das vorhergehende Zeichen einmal pro Zeile treffen oder nicht treffen sollte
{Nummer} Dies bedeutet, dass das vorangehende Zeichen die angegebene Anzahl von Malen in der Zeichenfolge erfüllen muss
{Nummer} Bedeutet, dass das vorhergehende Zeichen in der Zeichenfolge die angegebene Anzahl von Malen und mehr erfüllen sollte
{Nummer1, Nummer2} Bedeutet, dass das vorangehende Zeichen auf der Zeile von der ersten bis zur zweiten Anzahl vorkommen muss
. Gibt ein anderes Zeichen als \ n (neue Zeile) an
(ein Teilausdruck) Sucht nach einem Teilausdruck und speichert die gefundene Symbolgruppe
\ Gruppennummer Ruft die angegebene Zeichengruppe ab, die mit dem vorherigen Literal gespeichert wurde
Symbol1 | Zeichen 2 Sucht nach einem von zwei Zeichen
[Zeichensatz] Sucht nach einem Zeichen aus einer gegebenen Menge
[^ Zeichensatz] Sucht nach allen Zeichen, die nicht im Set enthalten sind
\ b Gibt die Wortgrenze an, die Position zwischen dem Wort und einem Leerzeichen
\ B Gibt die Raumgrenze an, die Position zwischen einem Leerzeichen und einem Wort
\ c Es fällt mit dem Steuerzeichen der Form "Strg" + "Symbol" zusammen
\ d Eine beliebige Nummer
\ D Jedes nicht numerische Zeichen
\ f Symbol für die Seitenübersetzung
\ n Neues Zeilenzeichen
\ r Wagenrücklaufsymbol
\ s Gap, Tab, Newline oder Zeilenvorschub
\ t Tabellierung
\ v Vertikale Tabellierung
\ w Buchstabe, Nummer oder Unterstrich
\ x Code Symbol mit dem angegebenen Hexadezimalcode
\ oCod Symbol mit dem angegebenen Code
\ Gruppennummer Ruft eine zuvor gespeicherte Gruppe von Zeichen mit einer angegebenen Nummer aus dem Speicher ab

Beispiel:

	 /(\w+)@({\w\._}+)/
	

Dieser Ausdruck sucht nach einer beliebigen E-Mail-Adresse und unterteilt sie in zwei Teile: den Mailbox-Namen und den Server-Namen und speichert sie im Speicher als Gruppen von Zeichen unter den Nummern 1 und 2.

Klasse RegExp

Diese Klasse ist verantwortlich für die Verarbeitung der Zeilen mit Hilfe von regulären Ausdrücken. Sein Konstruktor hat die folgende Form:

  RegExp ( Regulärer Ausdruck , Flags )
	

Es braucht nur einen obligatorischen Parameter - es ist ein "Regulärer Ausdruck", der zitiert wird. Der Parameter "flags" ist eine zusätzliche Suchbedingung und kann Werte annehmen:

  • g - setzt die globale Suche, wenn dieses Flag gesetzt ist, dann gibt der Ausdruck alle passenden Wörter zurück.
  • ich - ignoriere den Fall von Charakteren
  • m - Mehrzeilige Suche

Um mit regelmäßigen Varianzen zu arbeiten, werden drei Methoden der String-Klasse verwendet:

  • match - Führt eine String-Suche unter Verwendung des als Parameter übergebenen regulären Ausdrucks durch und gibt ein Array mit Suchergebnissen zurück. Wenn nichts gefunden wird, wird null zurückgegeben.
  • replase - Führt eine Suche und Ersetzung in einer Zeichenfolge unter Verwendung von regulären Ausdrücken durch und gibt die resultierende Zeichenfolge zurück.
  • search - Führt einen Zeiger in einer Zeichenfolge aus, wobei der als Parameter übergebene reguläre Ausdruck verwendet wird, und gibt die Position der ersten Teilzeichenfolge zurück, die mit dem regulären Ausdruck übereinstimmt.

Eigenschaften

Eigentum Beschreibung
letzterIndex Gibt die Startposition der Suche in der Zeile an
sourse Gibt eine reguläre Ausdruckszeichenfolge zurück (schreibgeschützt)
global Definiert das Vorhandensein des Flags g und gibt entweder wahr oder falsch zurück
ignoreCase Definiert das Vorhandensein der i-Flagge und gibt entweder wahr oder falsch zurück
mehrspurig Definiert das Vorhandensein des Flags m und gibt entweder wahr oder falsch zurück

Methoden

Methode Beschreibung
kompilieren ( regelmäßiger Niederschlag von g, i, m ) Kompiliert einen regulären Ausdruck in ein internes Format, um die Arbeit zu beschleunigen, kann verwendet werden, um einen regulären Ausdruck zu ändern
Exec ( Zeichenfolge ) Ähnlich der Übereinstimmungsmethode der String-Klasse, aber die Zeichenfolge, nach der Sie suchen möchten, wird als Parameter übergeben
Test ( Zeichenfolge ) Ähnlich wie die Suchmethode der String-Klasse gibt sie in Abhängigkeit von den Suchergebnissen true oder false zurück

Beispiel:

	 var result, re, str;
	 str = "http://www.netscape.com";
	 re = new RegExp ("w {3}", "i");
	 Ergebnis = str.match (re)
	

In diesem Abschnitt des Skripts wird in der Zeichenfolge, die der Variablen "str" ​​ohne Groß- und Kleinschreibung zugewiesen wurde, nach dem Text "www" gesucht, und die Übereinstimmungsmethode gibt ein Ergebnisarray mit den Suchergebnissen zurück.

Globales RegExp-Objekt

Dieses globale Objekt dient dazu, die Suchergebnisse mithilfe von regulären Ausdrücken zu nutzen. Dieses Objekt wird vom Interpreter erstellt und ist immer verfügbar. Das Format des Zugriffs auf seine Eigenschaften:

  RegExp.  Funktion
 

Eigenschaften

Eigentum Beschreibung
$ Nummer des Teilausdrucks Gibt eine der letzten gefundenen Teilausdrücke zurück (hängt von der Anzahl ab). Die Zahl kann zwischen 1 und 9 liegen, da der Interpreter in dieser Eigenschaft nur die letzten neun gefundenen Unterausdrücke speichert. Um auf den Rest zuzugreifen, wird ein Array verwendet, das von der Match- oder Exec-Methode zurückgegeben wird
Index Gibt die Position in der Zeichenfolge der gefundenen Teilzeichenfolge zurück
Eingabe | & _ Gibt die Zeichenfolge zurück, in der die Suche ausgeführt wird
letzterIndex Gibt die Startposition der Suche in der Zeile an
LetzteMatch | $ & Gibt den zuletzt gefundenen Teilstring zurück
LetztesParent | $ + Gibt die letzte gefundene Zeichengruppe zurück, wenn der reguläre Ausdruck Teilausdrücke verwendet hat
leftContext | $ ' Gibt eine Zeichenfolge zurück, die aus allen Zeichen vom Anfang der Zeile bis zur zuletzt gefundenen Teilzeichenfolge besteht und diese nicht enthält
rightContext | $ ' Gibt eine Zeichenfolge zurück, die aus allen Zeichen der letzten gefundenen Teilzeichenfolge besteht und diese nicht am Ende der ursprünglichen Zeichenfolge enthält

Beispiele für die Verwendung von regulären Ausdrücken

Parsing von URLs

	 var re, str, Protokoll, Adresse, Dateiname, Ergebnis;
	 str = "http // www.somedomain.ru / index2.html";
	 re = new RegExp ("((\ w +): \ / \ /)? ([^ /] +) (. *)?", "i");
	 result = re.exec (str);
	 if (Ergebnis! = null)
	 {
		 Protokoll = RegExp. $ 2;
		 Adresse = RegExp. $ 3;
		 Dateiname = RegExp. $ 4;
	 }
	

Dieses Skript zerlegt die Internetadresse in mehrere Teile. Im regulären Ausdruck wurden mehrere Teilausdrücke verwendet, die vom Interpreter wie folgt gespeichert werden: Zuerst wird der externe Ausdruck gespeichert und dann der interne Ausdruck. Nach dem regulären Ausdruck beginnt die Zeichenkette (result = re.exec (str);), die beginnt, die Adresse zu zerbrechen, und dann wird die Korrektheit der Adresse überprüft, und im Falle eines positiven Ergebnisses werden die entsprechenden Teile der Adresse den Variablen zugewiesen.

Funktion zum Entfernen von Leerzeichen am Anfang und Ende einer Zeile

	 Funktionstrimmung (str)
	 {
	  return str.toString (). replace (/ ^ [] + /, '') .replace (/ [] + $ /, '');
	 }
	
Eine andere Option:
	 Funktion trimmen (str) {
	  return str.replace (/ ^ \ s + | \ s + $ / g, '');
	  }
	

Finde Musik auf der Seite

 var mmReg = / (?: http: \ / \ / [\ w.] + \ /)? (?!: \ / \ /) [^ <^> ^ "^ '^ \ s] + \. (? : aiff | au | avi | flv | mittel | mov | mp3 | ogg | ra | rm | spl | swf | wav | wma | wmv) (?! \ w) / ig; dies.tmp = dieser.allText.match ( mmReg); if (this.tmp && this.search_common_embeds) if ((this.tmp.length> 1)) if ((this.tmp.length> 2) || (this.tmp [0]! = this.tmp [1])) ...