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
Programme in Docker-Containern müssen häufig auf ...
Vorwort Kürzlich mit mysql /usr/local/mysql/bin/m...
Eine ausführliche Dokumentation zur Installation ...
Vue ruft die PC-Kamera auf, um Bilder in Echtzeit...
Im Allgemeinen bietet MySQL standardmäßig eine Vi...
Inhaltsverzeichnis 1. Ziehen Sie das Bild 2. Ausf...
Inhaltsverzeichnis Vorwort Ajax seriell und paral...
Was ist HTTP? Wenn wir eine Website durchsuchen m...
Dieser Artikel beschreibt anhand von Beispielen, ...
Inhaltsverzeichnis Vorwort 1. Basisdaten 2. Verer...
Vorwort Hallo zusammen, ich bin Liang Xu. Bei der...
Code zum Ausblenden von Text, Ausblenden eines bes...
Detailliertes Beispiel zum Entfernen doppelter Da...
01. Befehlsübersicht Der Befehl „seq“ wird verwen...
Über wen Zeigt die am System angemeldeten Benutze...