Erläuterung regulärer Ausdrücke in JavaScript

Erläuterung regulärer Ausdrücke in JavaScript

1. Erstellen regulärer Ausdrücke

JavaScript bietet zwei Möglichkeiten zum Erstellen regulärer Ausdrücke:

  • Die erste Methode: Schreiben Sie es direkt durch reguläre Ausdrücke
  • Die zweite Methode: Erstellen Sie ein RegExp-Objekt über new RegExp('regulärer Ausdruck')
const re1 = /ABC\-001/;
const re2 = neuer RegExp('ABC\\-001');
re1; // /ABC\-001/
re2; // /ABC\-001/

Beachten Sie, dass bei Verwendung der zweiten Schreibweise aufgrund von Zeichenfolgen-Escapeproblemen die beiden \ in der Zeichenfolge tatsächlich ein \ sind.

2. Nutzungsmodus

2.1 Verwenden des einfachen Modus

Einfache Muster bestehen aus gefundenen direkten Übereinstimmungen. Beispielsweise stimmt das Muster /abc/ nur mit den Zeichen „abc“ überein, die gleichzeitig und in dieser Reihenfolge in einer Zeichenfolge vorkommen. Dies würde zu „Hallo, kennen Sie das ABC?“ und „Die neuesten Flugzeugdesigns sind aus Slabcraft hervorgegangen“ passen. In beiden obigen Beispielen stimmt die Teilzeichenfolge „abc“ überein. Es wird keine Übereinstimmung mit der Zeichenfolge „Grab crab“ geben, da diese keine Teilzeichenfolge „abc“ enthält.

2.2 Verwendung von Sonderzeichen

Beispiel: Das Muster /abc/ entspricht einem einzelnen „a“, gefolgt von null oder mehr „b“s (was null oder mehr Vorkommen des vorherigen Elements bedeutet), gefolgt von einer beliebigen Zeichenkombination von „c“. In der Zeichenfolge „s’scbbabbbbcdebc“ entspricht dieses Muster der Teilzeichenfolge „abbbbc“.

Charakter Bedeutung
\ Für das Matching gelten die folgenden Regeln:
Ein Backslash vor einem Nicht-Sonderzeichen gibt an, dass das nächste Zeichen ein Sonderzeichen ist und nicht wörtlich interpretiert werden darf. Beispielsweise entspricht ein „d“ ohne vorangestelltes „“ normalerweise einem kleinen „d“. Wenn '' hinzugefügt wird, wird dieses Zeichen zu einem Sonderzeichen, d. h. es entspricht einer Zahl.
Mit einem Backslash kann auch das darauf folgende Sonderzeichen in ein Literal umgewandelt werden. Beispielsweise entspricht das Muster /a/ 0 oder mehr a's. Im Gegensatz dazu entfernt das Muster /a*/ die Besonderheit von '' und gleicht somit Zeichenfolgen wie „a*“ ab.
Vergessen Sie bei Verwendung von new RegExp("pattern") nicht, \ zu escapen, da \ in einem String auch ein Escape-Zeichen ist.
^ Stimmt mit dem Anfang der Eingabe überein. Beispielsweise stimmt /^A/ nicht mit dem 'A' in „an A“ überein, wohl aber mit dem 'A' in „An E“.
$ Stimmt mit dem Ende der Eingabe überein. Beispielsweise entspricht /t$/ nicht dem „t“ in „eater“, wohl aber dem „t“ in „eat“.
* Stimmt 0-mal oder öfter mit dem vorhergehenden Ausdruck überein. Entspricht {0,}. Beispielsweise entspricht /bo*/ der Zeichenfolge „booooo“ in „A ghost boooooed“.
+ Stimmt ein- oder mehrmals mit dem vorhergehenden Ausdruck überein. Entspricht {1,}. Beispielsweise passt /a+/ zu dem „a“ in „candy“ und allen „a“s in „caaaaaaandy“.
? Stimmt 0 oder 1 Mal mit dem vorhergehenden Ausdruck überein. Entspricht {0,1}. Beispielsweise entspricht /e?le?/ „el“ in „angel“, „le“ in „angle“ und „l“ in „oslo“.
Wenn es auf einen der Quantifizierer *, +, ? oder {} folgt, wird der Quantifizierer nicht gierig gemacht (es werden so wenige Zeichen wie möglich abgeglichen), im Gegensatz zum standardmäßigen gierigen Modus (es werden so viele Zeichen wie möglich abgeglichen).
Wenn Sie beispielsweise /\d+/ auf „123abc“ anwenden, wird „123“ zurückgegeben. Bei Verwendung von /\d+?/ wird jedoch nur „1“ zurückgegeben.
. Stimmt mit jedem einzelnen Zeichen außer dem Zeilenumbruch überein. Beispielsweise entspricht /.n/ den Wörtern 'an' und 'on', aber nicht 'nay' in „nay, an apple is on the tree“.
X j
{N} n ist eine positive Ganzzahl, die genau n-mal mit dem vorherigen Zeichen übereinstimmt.
Beispielsweise entspricht /a{2}/ nicht dem „a“ in „candy“, wohl aber allen „a“s in „caandy“ und den ersten beiden „a“s in „caaandy“.
{n,m} Sowohl n als auch m sind ganze Zahlen. Entspricht dem vorhergehenden Zeichen mindestens n-mal und höchstens m-mal. Wenn der Wert von n oder m 0 ist, wird dieser Wert ignoriert. Beispielsweise entspricht /a{1, 3}/ keinem Zeichen in „cndy“, wohl aber dem a in „candy“, den ersten beiden a’s in „caandy“ und den ersten drei a’s in „caaaaaaandy“. Beachten Sie, dass beim Abgleichen von „caaaaaaandy“ der übereinstimmende Wert „aaa“ ist, obwohl in der ursprünglichen Zeichenfolge mehr A's vorhanden waren.
[xyz] Eine Sammlung von Charakteren. Stimmt mit jedem Zeichen innerhalb der eckigen Klammern überein, einschließlich Escape-Sequenzen. Sie können einen Bindestrich (-) verwenden, um einen Zeichenbereich anzugeben. Sonderzeichen wie Punkt (.) und Sternchen (*) haben in einem Zeichensatz keine besondere Bedeutung. Sie müssen nicht entkommen, aber das Entkommen funktioniert.
Beispielsweise sind [abcd] und [ad] dasselbe. Sie stimmen beide mit dem „b“ in „brisket“ und dem „c“ in „city“ überein. /[az.]+/ und /[\w.]+/ stimmen mit der Zeichenfolge „test.i.ng“ überein.
[^xyz] Ein umgekehrter Zeichensatz. Das heißt, es stimmt mit jedem Zeichen überein, das nicht in eckigen Klammern steht. Sie können einen Bindestrich (-) verwenden, um einen Zeichenbereich anzugeben. Jeder normale Charakter funktioniert hier.
\B Stimmt mit einer Wortgrenze überein. Eine Wortgrenze ist eine Position, an der auf ein Wort kein weiteres „字“-Zeichen folgt oder an der ihm kein anderes „字“-Zeichen vorangeht. Beachten Sie, dass eine übereinstimmende Wortgrenze nicht im übereinstimmenden Inhalt enthalten ist. Mit anderen Worten, die Länge des Inhalts einer übereinstimmenden Wortgrenze beträgt 0. Zum Beispiel:
/\bm/ entspricht dem „m“ in „moon“; /oo\b/ entspricht nicht dem „oo“ in „moon“, da auf „oo“ ein „Wort“-Zeichen „n“ folgt. /oon\b/ entspricht ‚oon‘ in „moon“, da ‚oon‘ das Ende der Zeichenfolge ist. Auf diese Weise folgt kein „字“-Zeichen.
\D Stimmt mit einer Ziffer überein. Entspricht [0-9]. Beispielsweise entspricht /\d/ oder /[0-9]/ der Nummer '2' in „B2 ist die Suite-Nummer.“.
\D Stimmt mit einem Zeichen überein, das keine Ziffer ist. Entspricht [^0-9]. Beispielsweise entspricht /\D/ oder /[^0-9]/ dem „B“ in „B2 ist die Suite-Nummer.“.
\F Stimmt mit einem Seitenvorschubzeichen überein (U+000C).
\N Stimmt mit einem Zeilenumbruchzeichen überein (U+000A).
\R Entspricht einem Wagenrücklaufzeichen (U+000D).
\S Stimmt mit einem Leerzeichen überein, einschließlich Leerzeichen, Tabulatorzeichen, Seitenvorschubzeichen und Zeilenumbruchzeichen. Entspricht [ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff].
Beispielsweise entspricht /\s\w*/ ' bar ' in „foo bar.“.
\S Stimmt mit einem Zeichen überein, das kein Leerzeichen ist. Entspricht [^ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff].
Beispielsweise entspricht /\S\w*/ „foo“ in „foo bar.“.
\T Entspricht einem horizontalen Tabulatorzeichen (U+0009).
\w Stimmt mit einem einzelnen Zeichen überein (Buchstabe, Ziffer oder Unterstrich). Entspricht [A-Za-z0-9_].
Beispielsweise entspricht /\w/ dem „a“ in „apple“, der „5“ in „$5.28“ und der „3“ in „3D.“.
\W Stimmt mit einem Nicht-Wort-Zeichen überein.
\N In einem regulären Ausdruck gibt es die Teilzeichenfolge zurück, die mit der letzten n-ten Teilerfassung übereinstimmt (die Anzahl der Erfassungen wird nach der linken Klammer gezählt).

3. Anwendung

3.1 Einen String teilen

Die Verwendung regulärer Ausdrücke zum Aufteilen von Zeichenfolgen ist flexibler als die Verwendung fester Zeichen. Der übliche Aufteilungscode lautet:

"ad c".split(" '); // ['a', 'd', '', '', 'c']

Die obige Methode kann aufeinanderfolgende Leerzeichen nicht erkennen. Verwenden Sie daher stattdessen reguläre Ausdrücke:

'ab c'.split(/\s+/); // ['a', 'b', 'c']

Unabhängig von der Anzahl der vorhandenen Leerzeichen kann die Zeichenfolge normal geteilt werden. Fügen Sie dann ',' hinzu:

'a, b, c d'.split(/[\s\,]+/); // ['a', 'b', 'c', 'd']

Fügen Sie dann hinzu:

'a,b;; c d'.split(/[\s\,\;]+/); // ['a', 'b', 'c', 'd']

Daher können reguläre Ausdrücke verwendet werden, um unregelmäßige Eingaben in korrekte Arrays umzuwandeln.

3.2 Gruppierung

Neben der Feststellung, ob eine Übereinstimmung vorliegt, können reguläre Ausdrücke auch Teilzeichenfolgen extrahieren. Die durch () dargestellten Teilzeichenfolgen sind die zu extrahierenden Gruppen. Zum Beispiel:

^(\d{4})-(\d{4,9})$ definiert jeweils zwei Gruppen, die die Vorwahl und die Ortsrufnummer direkt aus der übereinstimmenden Zeichenfolge extrahieren können:

var re = /^(\d{4})-(\d{4,9})$/;
// ['010-12345', '010', '12345']
re.exec('0530 12306'); // null

Nach einer erfolgreichen Übereinstimmung gibt die Methode exec() ein Array zurück. Das erste Element ist die gesamte Zeichenfolge, die mit dem regulären Ausdruck übereinstimmt, und die nachfolgenden Zeichenfolgen stellen die erfolgreich übereinstimmenden Teilzeichenfolgen dar.

Die Methode exec() gibt null zurück, wenn die Übereinstimmung fehlschlägt.

3.3 Greedy-Matching

Beachten Sie, dass die Suche nach regulären Ausdrücken standardmäßig „gierig“ ist, d. h., sie sucht nach Übereinstimmungen mit so vielen Zeichen wie möglich. Ordnen Sie die 0 nach der Zahl wie folgt zu:

var re = /^(\d+)(0*)$/;
// ['102300', '102300', '']

Da \d+ Greedy Matching verwendet, gleicht es alle folgenden Nullen direkt ab, sodass 0* nur mit der leeren Zeichenfolge übereinstimmen kann.

Sie müssen \d+ so einstellen, dass es nichtgieriges Matching verwendet (das heißt, so wenig Matching wie möglich), um die folgende 0 zu finden. Durch Hinzufügen eines ? wird \d+ so eingestellt, dass es nichtgieriges Matching verwendet:

var re = /^(\d+?)(0*)$/;
// ['102300', '1023', '00']

3.4 Reguläre Ausdrucksflags

g Globale Suche.
i Groß-/Kleinschreibung ignorierende Suche.
m Mehrzeilige Suche.
y Führt eine „klebrige“ Suche aus, bei der die Übereinstimmung an der aktuellen Position in der Zielzeichenfolge beginnt. Sie können das Flag y verwenden.

3.5 test()-Methode

Mit der Methode test() wird geprüft, ob eine Zeichenfolge einem Muster entspricht. Wenn die Zeichenfolge übereinstimmenden Text enthält, wird „true“ zurückgegeben, andernfalls „false“.

var re = /^(\d{4})-(\d{4,9})$/;
re.test('0530-12321'); // wahr
re.test('0530-123ab'); // falsch
re.test('0530 12321'); // falsch

4. Häufig verwendete reguläre Ausdrücke (Referenz)

E-Mail-Adresse bestätigen: ^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
ID-Nummer überprüfen (15 oder 18 Ziffern): ^\d{15}|\d{}18$
Mobiltelefonnummer aus Festlandchina: 1\d{10}
Festnetznummer aus Festlandchina: (\d{4}-|\d{3}-)?(\d{8}|\d{7})
Postleitzahl Festlandchina: [1-9]\d{5}
IP-Adresse: ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
Datum (Jahr-Monat-Tag): (\d{4}|\d{2})-((1[0-2])|(0?[1-9]))-(([12][0-9])|(3[01])|(0?[1-9]))
Datum (Monat/Tag/Jahr): ((1[0-2])|(0?[1-9]))/(([12][0-9])|(3[01])|(0?[1-9]))/(\d{4}|\d{2})
Prüfnummer: ^[0-9]*$
Überprüfen Sie die n-stellige Zahl: ^\d{n}$
Überprüfen Sie, ob mindestens n Ziffern vorhanden sind: ^\d{n,}$
Überprüfen Sie die Anzahl der mn Ziffern: ^\d{m,n}$
Überprüfen Sie, ob die Zahl mit Null beginnt und ungleich Null ist: ^(0|[1-9][0-9]*)$
Überprüfen Sie, ob eine positive reelle Zahl 1-3 Dezimalstellen hat: ^[0-9]+(.[0-9]{1,3})?$
Überprüfen Sie eine positive Ganzzahl ungleich Null: ^\+?[1-9][0-9]*$
Überprüfen Sie, ob die Ganzzahl ungleich Null ist: ^\-[1-9][0-9]*$
Überprüfen Sie nicht negative Ganzzahl (positive Ganzzahl + 0) ^\d+$
Überprüfen Sie nicht positive Ganzzahl (negative Ganzzahl + 0) ^((-\d+)|(0+))$
Überprüfen Sie, ob die Länge des Zeichens 3 beträgt: ^.{3}$
Überprüfen Sie eine Zeichenfolge bestehend aus 26 englischen Buchstaben: ^[A-Za-z]+$
Überprüfen Sie eine Zeichenfolge bestehend aus 26 englischen Großbuchstaben: ^[AZ]+$
Überprüfen Sie eine Zeichenfolge bestehend aus 26 englischen Kleinbuchstaben: ^[az]+$
Überprüfen Sie eine Zeichenfolge bestehend aus Zahlen und 26 englischen Buchstaben: ^[A-Za-z0-9]+$

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können!

Das könnte Sie auch interessieren:
  • Inventarisierung der Fallstricke von Klammern in regulären Ausdrücken in JavaScript
  • Der Unterschied zwischen der Verwendung von tofixed und round in JS zur Verarbeitung von Datenrundung
  • JS verarbeitet Datenrundung (detaillierte Erklärung des Unterschieds zwischen tofixed und round)
  • Detaillierte Erklärung zur Verwendung der toFixed()-Rundung in JavaScript
  • Einfache Überprüfungsmethode für reguläre Ausdrücke von js
  • js verwendet reguläre Ausdrücke zum Filtern von Jahres-, Monats- und Tagesbeispielen
  • Detaillierte Erläuterung des Rundungsgenauigkeitsproblems der toFixed () -Methode in JS
  • Zwei Möglichkeiten zur Implementierung der Schnittstellenzuordnung in JMeter (Regulärer Ausdrucksextraktor und JSON-Extraktor)
  • So stellen Sie die Validierung über reguläre Ausdrücke in nest.js richtig ein
  • Fallstricke von toFixed() und regulären Ausdrücken in jJavaScript

<<:  So verwenden Sie CSS-Stile und -Selektoren

>>:  HTML Mehrere spezielle Trennlinieneffekte

Artikel empfehlen

Lösung für den Fehler „MySQL-Server ist verschwunden“

MySQL-Server hat Problem in PHP behoben 1. Hinter...

CSS verwendet die BEM-Namenskonvention

Welche Informationen möchten Sie erhalten, wenn S...

Das WeChat-Applet implementiert eine einfache Taschenrechnerfunktion

WeChat-Applet: Einfacher Rechner. Zu Ihrer Inform...

Details zur Verwendung regulärer Ausdrücke in MySQL

Inhaltsverzeichnis 1. Einleitung 2. Bereiten Sie ...

Detaillierte Erklärung der MySQL information_schema-Datenbank

1. Übersicht Die Datenbank information_schema ist...

JavaScript implementiert eine Seiten-Scrolling-Animation

Inhaltsverzeichnis Erstellen eines Layouts CSS-St...

MySQL-Platzhalter (erweiterte SQL-Filterung)

Inhaltsverzeichnis Lassen Sie uns zunächst kurz P...