Kombinieren von Lookahead und Lookbehind mit ErfassungsgruppenIn realen Anwendungsszenarien sind Erfassungsgruppen oder Nichterfassungsgruppen normalerweise auf Lookahead- und Lookbehind-Bedingungen beschränkt. Wenn Sie beispielsweise die Zahl 12345678 formatieren, ist das Ergebnis 12.345.678. Die regelmäßige Umsetzung erfolgt wie folgt: let formatSum = '12345678'.replace(/\B(?=(?:\d{3})+(?!\d))/g, ',') Erfassende und nicht erfassende GruppenUm Lookahead und Lookbehind zu verstehen, müssen wir zunächst Erfassungsgruppen und Nichterfassungsgruppen verstehen. In js, () bedeutet Erfassungsgruppen, () speichert die übereinstimmenden Werte in jeder Gruppe unter Verwendung von $n (n ist eine Zahl, die den Inhalt der n-ten Erfassungsgruppe angibt); (?:) stellt eine nicht erfassende Gruppe dar. Der einzige Unterschied zu einer erfassenden Gruppe besteht darin, dass der von der nicht erfassenden Gruppe gefundene Wert nicht gespeichert wird. Am Beispiel des Ausdrucks formatSum sind (?=(?:\d{3})+(?!\d)), (?:\d{3}), (?!\d) alles Gruppen und die zweite Gruppe ist eine nicht erfassende Gruppe. Nach vorne schauen, zurückblicken, nach vorne schauen und negativ zurückblickenIm obigen FormatSum-Ausdruck werden „?=“ und „?!“ verwendet, wobei es sich um den sogenannten Lookahead und Negative Lookahead handelt. Um es leichter verständlich zu machen, beginnen wir mit einem einfachen Beispiel. // Vorausschauend: A(?=B) //Finde A vor B // Rückblick: (?<=B)A //Finde A nach B // Negativer Vorausblick: A(?!B) //Finde A, auf das nicht B folgt // Negativer Rückblick: (?<!B)A //Suche A, dem kein B vorangeht Wenn wir uns den Ausdruck formatSum noch einmal ansehen, wird (?:\d{3})+(?!\d) als ein Gesamtausdruck A betrachtet, das heißt, formatSumme = /\B(?=A)/g //Hier ist A ein Ausdruck, nicht der eigentliche Buchstabe A, nur zum besseren Verständnis Dies bedeutet, dass das \B vor Ausdruck A abgeglichen wird, und \B gleicht nicht-buchstabliche Grenzen ab. Daher ist ersichtlich, dass die Gesamtfunktion des Ausdrucks darin besteht, die Grenze vor Ausdruck A abzugleichen und zu ersetzen. Das Gegenstück zu \B ist \b, das einer Buchstabengrenze entspricht. Für Anfänger ist das Konzept der Grenze schwer zu verstehen. Man kann es sich als unsichtbares | vorstellen. In jeder Zeichenfolge mit einer Länge größer oder gleich 2 gibt es eine Grenze. Beispielsweise kann „ab“ als „a|b“ angezeigt werden, mit der Ausnahme, dass das „|“ unsichtbar ist und bei der Zeichenfolgenlänge nicht mitgezählt wird. 'ab'.replace(/\B/, ',') // a,b Als nächstes schauen wir uns Teil A des Ausdrucks an: (?:\d{3})+(?!\d) . Erstens stellt ?: eine nicht erfassende Gruppe dar, \d{3} stellt 3 Ziffern dar und (?:\d{3})+ stellt 3, 6, 9, 12... Ziffern dar; (?!\d) ist ein negativer Vorausschaueffekt, d. h. es muss mit (?:\d{3})+ übereinstimmen, auf das keine Zahl folgt. Zusammenfassend: (?:\d{3})+(?!\d) Stimmt mit 3*n (n=1-Schritten) Ziffern in „12345678“ überein, die keine Zahlen sind, d. h. „678“, „345678“ Das Ergebnis ist also: formatSumme = '12345678'.replace(/\B(?=(?:\d{3})+(?!\d))/g, ',') Stimmt mit der Nicht-Buchstabengrenze vor den 3*n (n=1, n++) Ziffern in „12345678“ überein, die keine Zahlen sind. Das heißt, die nicht-buchstablichen Grenzen vor ,678‘ und ,345678‘ werden abschließend durch Kommas ersetzt. Das heißt, vor „3“ und „6“ muss ein Komma eingefügt werden. Im Augenblick '12345678'.replace(/\B(?=(?:\d{3})+(?!\d))/g, ',') === '12,345,678' // WAHR ZusammenfassenDies ist das Ende dieses Artikels über Lookahead-, Lookbehind- und nicht erfassende Gruppen in JS-regulären Ausdrücken. Weitere Informationen zu Lookahead-, Lookbehind- und nicht erfassenden Gruppen in JS-regulären Ausdrücken finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: IE6 implementiert min-width
>>: Detailliertes Tutorial zur Installation und Konfiguration von MySql5.7 unter Ubuntu 20.04
Inhaltsverzeichnis 1. Einleitung 2. Grundsatz Pra...
Holen Sie sich die Anzahl der Verbindungen --- Ho...
Vorwort Ein Index ist eine Datenstruktur, die ein...
verwenden <div id="app"> <rout...
Frage: In einigen Browsern, wie zum Beispiel im K...
Wie unten dargestellt: //Fragen Sie das Jahr und ...
Vorwort Bevor wir über den Deckungsindex sprechen...
Inhaltsverzeichnis Vorwort Ziel Erster Schritt: S...
In diesem Artikelbeispiel wird der spezifische JS...
1. Umweltvorbereitung Die IP-Adresse jedes Contai...
Um zwei verschiedene Tabellen abzufragen, müssen ...
mysql-5.7.9 bietet endlich eine Shutdown-Syntax: ...
Der ps-Befehl in Linux ist die Abkürzung für „Pro...
Wenn Sie nach der Installation der Datenbank das ...
Phrasenelemente wie <em></em> können d...