874 Shares 3532 views

Javascript, reguläre Ausdrücke Beispiele, überprüfen Regular Expression

Vor dem Aufkommen von Hypertext-Sprachen, aber bis es klar wurde, dass es notwendig ist, nicht nur zu suchen, sondern auch unter bestimmten Bedingungen zu arbeiten, an einem bestimmten Ort, mit geänderten Daten, in den richtigen Mengen, die üblichen Such- und Ersetzungsfunktionen für irgendwelche anspruchsvolle arrangiert Programmierer. Meisterwerke der Suchkunst in Programmiersprachen wurden erstellt, und Datenbanken wurden in Form von Probenahmebedingungen verfeinert, ausgestattet mit gespeicherten Prozeduren, Auslösern und anderen Mitteln zur Probenahme aus umständlichen relationalen Informationszusammensetzungen. Die Entstehung von regulären Ausdrücken für die Revolution führte nicht, aber es stellte sich heraus, dass es sich um ein nützliches und bequemes Mittel zur Suche und Ersetzung von Informationen handelt. Zum Beispiel, regelmäßige E-Mail-JavaScript-Ausdrücke erheblich vereinfachen die Registrierung von Besuchern, sie nicht die Website herunterladen, indem sie Nachrichten an nicht vorhandene Adressen.

Um zu sagen, dass der JavaScript-reguläre Ausdruck viel besser ist als die gut durchdachten indexOf () Sequenzen in der Gestaltung von bedingten und zyklischen Operatoren, ist es unmöglich, aber zu sagen, dass es den Skriptcode kompakt gemacht hat, aber schlecht verstanden für die Uneingeweihten kann eindeutig sein.

RegExp object = template + engine

Reguläre Ausdrücke sind eine Vorlage + Motor. Der erste ist der reguläre Ausdruck selbst – das JavaScript-Objekt ist RegExp, der zweite ist der Vorlagen-Executor, der ihn auf den String anwendet. Die Motoren, die reguläre Ausdrücke für jede Programmiersprache implementieren, sind unterschiedlich. Und obwohl nicht alle Unterschiede sind signifikant, sollte dies im Auge behalten werden, sowie sicher sein, sorgfältig überprüfen Sie den regulären Ausdruck vor der Verwendung.

Eine besondere Notation für das Schreiben regelmäßiger Ausdrücke ist sehr bequem und sehr effektiv, aber erfordert Pflege, Genauigkeit und Geduld aus dem Entwickler. Zur Notation von Mustern von regulären Ausdrücken ist es notwendig, sich zu benutzen. Dies ist kein Tribut an Mode, es ist die Logik der Umsetzung der Mechanismus der "JavaScript reguläre Ausdrücke".

Regelmäßiges Ausdrucksmuster

Zwei Optionen sind erlaubt:

Var expOne = / abc * / i;

Var expTwo = RegExp ("abc *", "i");

Normalerweise wird die erste Methode verwendet. Im zweiten Fall werden Anführungszeichen verwendet, um das Zeichen '' zu verwenden, muss es durch gemeinsame Regeln entgehen.

'Ich' ist die Fahne, die "Register ist nicht wichtig" bedeutet. Sie können auch die Flags 'g' – 'globale Suche' und 'm' – Mehrzeilige Suche verwenden.

Das Symbol '/' dient zur Bezeichnung einer Vorlage.

Der Anfang und das Ende des regulären Ausdrucks

Das Zeichen '^' definiert die Zeichen, aus denen der reguläre Ausdruck beginnt, und '$' bestimmt, welches Zeichen am Ende sein soll. Versuche nicht mit ihnen im Inneren des Ausdrucks, da haben sie eine andere Bedeutung.

Zum Beispiel,

Var eRegExp = neue RegExp (cRegExp, 'i');

Var cRegRes = '';

Var sTest = 'AbcZ';

Wenn (eRegExp.test (sTest)) {

CRegRes + = '- Ja';

} Else {

CRegRes + = '- Nein';

}

Var dTestLine = document.getElementById ('scTestLine');

DTestLine.innerHTML = 'Der Ausdruck /' + cRegExp + '/ für den String "+ sTest +" + cRegRes.

Im Element 'scTestLine' gibt es ein Ergebnis (die Variable cRegExp hat den entsprechenden Wert):

Der Ausdruck / ^ AbcZ $ / für den String "abcz" – Ja

Wenn Sie das Flag 'i' entfernen, wird das Ergebnis sein:

Der Ausdruck / ^ AbcZ $ / für den String "abcz" – Nr

Regulärer Expressionsinhalt

Ein regulärer Ausdruck ist eine Folge von Zeichen, die Gegenstand einer Suche ist. Der Ausdruck / qwerty / sucht das Vorkommen genau dieser Sequenz:

Ausdruck / qwerty / für den String "qwerty" – Ja

Der Ausdruck / qwerty / für den String "123qwerty456" – Ja

Der Charakter '^' ändert das Wesen des Ausdrucks:

Der Ausdruck / ^ qwerty / für den String "123qwerty456" – Nr

Der Ausdruck / ^ qwerty / für den String "qwerty456" – Ja

Ähnlich für das Ende des Zeilenzeichens. Reguläre Ausdrücke erlauben Sequenzen: zB [az], [AZ], [0-9] – alle Buchstaben des lateinischen Alphabets im angegebenen Register oder Ziffern. Russische Briefe dürfen auch benutzt werden, aber du solltest auf die Kodierung von Strings achten (wo man nach dem sucht, was gesucht wird) und die Seite. Oft werden russische Briefe, wie Sonderzeichen, vorzugsweise durch Codes gegeben.

Wenn Sie einen regulären Ausdruck bilden, können Sie die Optionen für das Vorhandensein bestimmter Symbole an einer bestimmten Stelle angeben, wobei ihre Nummer wie folgt festgelegt ist: '*' = Wiederholung von 0 oder mehrmal; '+' = Wiederholen Sie 1 oder mehr mal; {1,} ist das gleiche wie '+'; {N} = Wiederholung genau n-mal; {N,} = Wiederholung von n und mehrmal; {N, m} = Wiederholung von n bis m mal.

Mit eckigen Klammern können Sie die Zeichenvarianten aus dem Satz angeben. Es sieht so aus. [Abcd] = [ad] = irgendein Charakter von vier: 'a', 'b', 'c' oder 'd'. Sie können das Gegenteil angeben. Ein anderes Zeichen als das im Set angegebene: [^ abcd] = irgendein Zeichen außer 'a', 'b', 'c' oder 'd'. ' Zeigt an, dass es an dieser Stelle kein Symbol geben darf. " Definiert ein beliebiges Zeichen, mit Ausnahme eines Zeilenumbruchs. Dies ist ' n', ' r', ' u2028' oder ' u2029'. Der Ausdruck ' s * | S *' = '[ s | S] *' bedeutet die Suche nach einem beliebigen Zeichen, einschließlich Zeilenumbrüche.

Vereinfachte Versionen des regulären Ausdrucks

Der Ausdruck '[ s | S] *' – suche nach einem Leerzeichen oder dessen Abwesenheit, das ist alles, was in der Zeile ist. In diesem Fall steht die Notation für einen Raum, und ' S' steht für seine Abwesenheit.

Ebenso können Sie ' d' verwenden, um nach einer Dezimalstelle zu suchen, und ' D' wird ein nicht-numerisches Zeichen finden. Die Notation ' f', 'r' und ' n' entsprechen Form-Feed, Wagenrücklauf und Zeilenvorschub.

Das Tab-Zeichen ist ' t', das vertikale Zeichen ist ' v'. Die Notation ' w' findet jeden Buchstaben des lateinischen Alphabets (Buchstaben, Zahlen, Unterstrich) = [A-Za-z0-9_].

Die Notation ' W' ist äquivalent zu [^ A-Za-z0-9_]. Das bedeutet jeden Charakter, der kein Buchstabe des lateinischen Alphabets ist, eine Zahl oder ein '_' Zeichen.

Suche nach dem Zeichen ' 0' = Suche nach dem NUL-Zeichen. Suchen Sie nach ' xHH' oder ' uHHHH' = suchen Sie nach einem Zeichen mit dem HH- bzw. HHHH-Code. H – hexadezimale Ziffer.

Empfohlene Sprache und Verschlüsselung des regulären Ausdrucks

Jeder reguläre Ausdruck ist wichtig, um sorgfältig auf verschiedene Linienoptionen zu prüfen.

Mit der Erfahrung, regelmäßige Ausdrücke zu schaffen, werden Fehler weniger sein, aber dennoch muss man sich immer bedenken, dass die eigene Kenntnis der Regeln des Schreibens eines regulären Ausdrucks nicht der Realität entsprechen kann, besonders wenn das "Regelmäßige" von einer Sprache in eine andere übertragen wird.

Die Wahl zwischen den Klassikern (genaue Indikation) und einer vereinfachten Version des regulären Ausdrucks, ist es besser, die erste zu bevorzugen. Immerhin zeigen die Klassiker immer klar, was gesucht wird. Wenn es russische Buchstaben im regulären Ausdruck oder im Suchstring gibt, sollten Sie zu einer einzigen Kodierung aller Zeilen und einer Seite führen, auf der der JavaScript-Code, der den regulären Ausdruck ausführt, ausgeführt wird.

Bei der Verarbeitung von Zeichen, die nicht zum lateinischen Alphabet gehören, ist es sinnvoll, die Angabe der Zeichencodes, nicht die Zeichen selbst, zu berücksichtigen.

Bei der Implementierung von JavaScript-Suchalgorithmen sollte der reguläre Ausdruck sorgfältig geprüft werden. Es ist besonders wichtig, die Zeichencodierung zu steuern.

Klammern in regulären Ausdrücken

Die eckigen Klammern geben die Symbolvarianten an, die an einem bestimmten Ort vorhanden sein sollen oder nicht, und runde sind Varianten der Sequenzen. Aber das ist nur eine allgemeine Regel. Es gibt keine Ausnahmen von ihm, aber es gibt viele verschiedene Anwendungen.

Var cRegExp = "[az] * (Png | jpg | gif)";

Var eRegExp = neue RegExp (cRegExp, 'i');

Var cRegRes = '';

Var sTest = 'picture.jpg';

Wenn (eRegExp.test (sTest)) {

CRegRes + = '- Ja';

} Else {

CRegRes + = '- Nein';

}

Ergebnisse:

Expression /[az]*.(png|jpg|gif)/ für die Zeile "picture.jpg" – ja

Expression /^[ad][az]*.(png|jpg|gif)/ für die Zeile "picture.jpg" – Nr

Expression /^[ad][az]*.(png|jpg|gif)/ für die Zeichenfolge "apicture.jpg" – ja

Expression /^[ad][az]*.(png|jpg|gif)/ für die Zeichenfolge "apicture.jg" – Nr

Es sollte besonders bemerkt werden, dass alles, nach dem es ein Sternchen gibt, Null mal vorhanden sein kann. Das bedeutet, dass die "regelmäßige" zumindest auf unerwartete Weise arbeiten kann.

Prüfen von RegExp – E-Mail testen

In JavaScript erhalten reguläre Ausdrücke zwei Methoden, testen und ausführen und können in String-Objekten in ihren Methoden verwendet werden: suchen, teilen, ersetzen und übereinstimmen.

Die Testmethode wurde bereits nachgewiesen, es erlaubt Ihnen, die Richtigkeit eines regulären Ausdrucks zu überprüfen. Das Ergebnis der Methode ist wahr / falsch.

Betrachten Sie die folgenden regelmäßigen JavaScript-Ausdrücke. E-Mails von der Anzahl der "schwierigen, aber genauen" überprüfen:

Var eRegExp = /^(([ <[[…………………………….. @ "] +) *) | (" + ")) @ (( [[0-9] {1,3} . [0-9] {1,3} . [0-9] { 1,3} [0-9] {1,3}]) | (([a-zA-Z -0-9] + .) + [A-zA-Z] {2,}) ) $ /;

Für die Zeichenfolge var sTest ='[email protected] 'gibt es wahr, das heißt, diese Zeichenfolge ist die richtige E-Mail-Adresse. Die Prüfung wurde mit der Methode eRegExp.test (sTest) durchgeführt.

Praktische Anwendung: E-Mail bearbeiten

Die Exec-Methode auf der Ausgabe liefert ein Array, rufen:

Var aResult = eRegExp.exec (sTest);

CRegRes = '
' + aResult.length + '
';
Für (var i = 0; i <aResult.length; i ++) {
CRegRes + = aResult [i] + '
';
}

Gibt folgendes Ergebnis:

9
[email protected]
Slava.Chip
Slava.Chip
.Chip
Undefiniert
Sci.by
Undefiniert
Sci.by
Sci

Die anderen Methoden funktionieren ähnlich. Es wird empfohlen, sie selbst zu überprüfen. Die Entwicklung und Verwendung von regulären Ausdrücken ist wünschenswert, in der Praxis zu üben, das Kopieren des Codes ist hier nicht immer angemessen.

Beliebte "Stammgäste"

Die oben genannten JavaScript-regulären Ausdruck für eMail ist nicht der einzige, es gibt viele einfachere Optionen. Zum Beispiel, /^[w-.]+@[w-]+.[az]{2.3}$/i. Diese Option berücksichtigt jedoch nicht alle Optionen für die Erfassung einer E-Mail-Adresse.

Natürlich müssen Sie die Erfahrung der Kollegen überprüfen, analysieren die Methoden, die sie anbieten, bevor Sie Ihren eigenen regulären Ausdruck auf JavaScript entwerfen. Aber es gibt gewisse Schwierigkeiten. Vergessen Sie nicht, dass JavaScript-reguläre Ausdrücke (Beispiele für sie beim Kopieren) die wesentlichen Zeichen duplizieren können: '', '/' oder Anführungszeichen. Dies führt zu einem Fehler, der lange gesucht werden kann.

Es ist wichtig, den gewohnheitsmäßigen "menschlichen Aspekt" zu berücksichtigen. Immerhin kann ein formaler JavaScript-regulärer Ausdruck für ein Telefon, das ein Besucher (Person) sein kann, auf verschiedene Arten angezeigt werden: 123-45-67, (29) 1234567, 80291234567 oder +375291234567. Und es ist alles die gleiche Nummer. Die Variante des Schreibens mehrerer Vorlagen ist nicht immer akzeptabel, und eine starre Fixierung der Regel zum Schreiben einer Zahl kann unnötige Unannehmlichkeiten oder Einschränkungen verursachen. Die Variante / ^ d [ d () -] {4,14} d $ / i eignet sich für die meisten Verifizierungsfälle.

Wenn Sie JavaScript reguläre Ausdrücke komponieren wollen, nur Ziffern überprüfen, dann auch solch ein einfacher Fall erfordert Klärung. Er muss eine ganzzahlige oder eine gebrochene, exponentielle Notation oder eine gewöhnliche, positive Zahl oder negative Zahl betrachten. Sie können auch das Vorhandensein eines Währungssymbols, die Anzahl der Ziffern nach dem Dezimalpunkt und die Aufteilung des ganzen Teils der Zahl in Triaden berücksichtigen.

Der Ausdruck / ^ d + $ / i überprüft nur die Ziffern, und der Ausdruck / ^ d + . D + $ / i erlaubt Ihnen, einen Zeitraum zu verwenden, um den Bruchteil einer Zahl anzugeben.

In JavaScript können regelmäßige Ausdrücke verwendet werden, um das Format der Eingabedaten anzugeben, was insbesondere bei der Eingabe von Fragebögen, Passdaten, rechtlichen Adressen usw. wichtig ist.

Die Überprüfung des Datums ist nur kompliziert

Betrachten Sie JavaScript reguläre Ausdrücke. Beispiele für ein Datum, wie für eine Nummer oder Telefonnummer, stellen eine Wahl zwischen Steifigkeit und Flexibilität dar. Das Datum der Veranstaltung ist eine der wesentlichen Daten, die oft eingegeben werden müssen. Aber die Festlegung der Eingabe in einem bestimmten Format: 'dd-mm-yyyy' oder 'dm.yy' führt oft zu Kunden Unzufriedenheit. Der Übergang vom Tag-zu-Monat-Eingabefeld, der durch das klassische HTML-Formular durchgeführt wird, kann nicht stattfinden, wenn nur eine Ziffer eingegeben wird und die Eingabe der zweiten kann Schwierigkeiten verursachen. Zum Beispiel wurde im Feld des Tages 3 bereits eingegeben, und die nächste Ziffer 2 ersetzt nicht die erste und wird ihr zugewiesen 32, was natürlich Unannehmlichkeiten verursacht.

Effizienz und Bequemlichkeit von regulären Ausdrücken hängen im Wesentlichen vom Gesamtaufbau des Dialogs mit dem Besucher ab. In einem Fall ist es ratsam, ein Formulareintragsfeld zu verwenden, um das Datum anzugeben, in einem anderen Fall ist es notwendig, verschiedene Felder für Tag, Monat und Jahr bereitzustellen. Aber dann gibt es zusätzliche "Code-Kosten" für die Überprüfung des Schaltjahres, die Anzahl der Monate, die Anzahl der Tage in ihnen.

Suche mit Ersatz, Gedächtnis des regulären Ausdrucks

JavaScript-Ersetzen (reguläre Ausdrücke) verwenden die Methode des String-Objekts und erlauben es Ihnen, den Wert zu finden und sofort zu ändern. Dies ist nützlich, um Eingabefehler zu korrigieren, den Inhalt von Formularfeldern zu bearbeiten und Daten von einem Präsentationsformat in ein anderes zu konvertieren.

Var cRegExp = / ([а-я] +) s ([а-я] +) s ([а-я] +) / i; // Bei der Suche werden drei 'Variablen' angelegt

Var sTest = 'dieser Artikel ist gut!';
Var cRegRes = sTest.replace (cRegExp, "$ 2, $ 3, $ 1");

Var dTestLine = document.getElementById ('scTestLine');

DTestLine.innerHTML = 'Der Ausdruck' + cRegExp + 'für den String "+ sTest +" lautet:' + cRegRes;

Ergebnis:

Der Ausdruck / ([a-π] +) s ([a-π] +) s [[a-π] +) / i für die Zeile "dieser Artikel ist gut!" Holen Sie sich einen Artikel, gut, dieser!

Wenn sie ausgeführt wird, speichert jedes Paar von Klammern das Ergebnis in der 'Variablen' $ n, wobei n die Nummer des Klammerpaar ($ 1, $ 2, …) ist. Anders als die allgemein akzeptierte, hier wird die nummerierung von variablen mit 1 und nicht mit 0 durchgeführt.

Allgemeine Empfehlungen

Ein regelmäßiger Ausdruck vereinfacht den Code, aber die Zeit, um es zu entwickeln, ist oft wichtig. Sie können mit einfachen Konstrukten arbeiten und dann zu komplexeren Ausdrücken kombinieren. Sie können verschiedene Online-Dienste verwenden, um reguläre Ausdrücke oder spezielle lokale Werkzeuge zu testen.

Die beste Option ist, um Ihre eigene regelmäßige Ausdruck Bibliothek und Ihr eigenes Werkzeug für das Testen neuer Entwicklungen zu erstellen. Dies ist der beste Weg, um Erfahrungen zu konsolidieren und lernen, wie man schnell zuverlässige und komfortable Designs zu schaffen.

Unter Verwendung von Wiederholungen von Zeichen und Zeilen sollten die Sonderzeichen '*', '+' und Klammern, die die Anzahl der Wiederholungen angeben, von den Prinzipien der Einfachheit und Zweckmäßigkeit geleitet werden. Es ist wichtig zu verstehen, dass der reguläre Ausdruck vom Beginn seiner Operation bis zum Erreichen des Ergebnisses ganz in der Macht des Motors des verwendeten Browsers liegt. Nicht alle JavaScript-Sprachen sind gleichwertig. Jeder Browser kann seine eigenen persönlichen Vorlieben in die Interpretation von regulären Ausdrücken bringen.

Kompatibilität betrifft nicht nur Seiten und Stylesheets, sondern auch regelmäßige Ausdrücke. Eine Seite mit JavaScript kann nur dann als debugge betrachtet werden, wenn sie erfolgreich auf verschiedenen Browsern gearbeitet hat.

JavaScript, String und RegExp

Durch die richtige Arbeit auf der Client-Ebene, das heißt, im Besucher-Browser in der JavaScript-Sprache, erfordert hohe Qualifikation vom Entwickler. Es ist schon lange her, seit die Möglichkeit, JavaScript-Code mit Ihren eigenen Browser-Tools oder mit Hilfe von Drittanbieter-Erweiterungen, Code-Editoren, unabhängige Programme zu debuggen.

Jedoch nicht in allen Fällen kann der Debugger behandeln und eine gute Unterstützung für den Entwickler zur Verfügung stellen, eine schnellen Fehlererkennung, Engpässe erkennen. Die Zeiten, in denen der Computer wurde auf den Berechnungen konzentriert, in der fernen Vergangenheit. Nun, ein besonderes Augenmerk auf Informationen und Linienobjekte gekommen sind, eine bedeutende Rolle zu spielen. Die Anzahl der Stahlsaiten, und ihre wahre Natur manifestieren sie nur zur richtigen Zeit und am richtigen Ort.

Reguläre Ausdrücke verstärken die Möglichkeit, Linien, erfordern aber Selbstachtung. Debug RegExp in seiner Arbeit, auch wenn es möglich ist, zu simulieren, nicht zu interessante Idee.

die Struktur und Logik des RegExp-Objekts Legendes, Objekt String bedeutet, die Syntax und Semantik von JavaScript – einem wahren und sicher Code, den stabilen Betrieb von jeder Seite und der Seite als Ganze.