Heim >Web-Frontend >js-Tutorial >Eine Alternative zu regulären Ausdrücken: apg-exp
Dieser Artikel wurde von Sebastian Seitz und Almir Bijedic überprüft. Vielen Dank an alle Peer -Rezensenten bei SitePoint, um SitePoint -Inhalte in den Besten zu bringen!
Fast jeder Programmierer muss von Zeit zu Zeit in irgendeiner Form reguläre Ausdrücke verwenden. Für viele mag die Mustergrammatik mysteriös und entmutigend erscheinen. In diesem Tutorial wird ein neues Muster-Matching-Engine-APG-EXP eingeführt-eine featurereiche Alternative zu Regexp, die die ABNF-Mustersyntax verwendet und einfacher zu lesen ist.
Müssen Sie jemals Ihre E -Mail -Adresse überprüfen und so etwas begegnen?
<code>^[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}$</code>
Die Musteranpassungsmotor ist das richtige Werkzeug für diesen Job. Dies ist ein gut gestalteter, gut geschriebener regulärer Ausdruck. Es funktioniert gut. Was magst du noch nicht?
Nun, wenn Sie ein Experte für reguläre Ausdrücke sind, gibt es nichts. Aber für den Rest von uns könnten sie
seinGrammatik der regulären Ausdrucks hat eine lange und lange Geschichte und wurde tief in viele der Werkzeuge und Sprachen integriert, die wir jeden Tag als Programmierer verwenden.
Es gibt jedoch eine alternative Syntax, die es fast zur gleichen Zeit gibt, die unter Schriftstellern und Verbrauchern von technischen Spezifikationen im Internet sehr beliebt ist, mit allen Funktionen regulärer Ausdrücke, ist jedoch selten in der Weltnutzung von JavaScript -Programmierungen statt . Das heißt, das verstärkte Bacos-NOR-Paradigma (ABNF), das vom IETF in RFC 5234 und RFC 7405 formal definiert ist.
Schauen wir uns an, wie dieselbe E -Mail -Adresse in ABNF aussieht.
<code>email-address = local "@" domain local = local-word *("." local-word) domain = 1*(sub-domain ".") top-domain local-word = 1*local-char sub-domain = 1*sub-domain-char top-domain = 2*6top-domain-char local-char = alpha / num / special sub-domain-char = alpha / num / "-" top-domain-char = alpha alpha = %d65-90 / %d97-122 num = %d48-57 special = %d33 / %d35 / %d36-39 / %d42-43 / %d45 / %d47 / %d61 / %d63 / %d94-96 / %d123-126</code>
Natürlich ist es nicht kompakt, aber wie HTML und XML ist es so konzipiert, dass es von Menschen und Maschinen gelesen wird. Ich denke, nur ein bisschen Verständnis für Wildcard -Suchmuster, können Sie fast lesen, was hier in "Simple English" vor sich geht.
Diese E-Mail-Adresse für Regexp und APG-EXP wird in Beispiel 1 verglichen.
apg-exp ist eine Muster-Matching-Engine für das Erscheinungsbild von Regexp, verwendet jedoch die ABNF-Syntax für die Musterdefinition. In den nächsten Abschnitten werde ich Sie durch:
Wenn Sie in einer node.js -Umgebung arbeiten, werden Sie aus Ihrem Projektverzeichnis ausgeführt:
<code>^[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}$</code>
Sie können dann in Ihrem Code mit Request () darauf zugreifen.
Beispiel:
<code>email-address = local "@" domain local = local-word *("." local-word) domain = 1*(sub-domain ".") top-domain local-word = 1*local-char sub-domain = 1*sub-domain-char top-domain = 2*6top-domain-char local-char = alpha / num / special sub-domain-char = alpha / num / "-" top-domain-char = alpha alpha = %d65-90 / %d97-122 num = %d48-57 special = %d33 / %d35 / %d36-39 / %d42-43 / %d45 / %d47 / %d61 / %d63 / %d94-96 / %d123-126</code>
Um eine Kopie des Code aus GitHub zu erhalten, können Sie das Repository in Ihr Projektverzeichnis klonen:
<code>npm install apg-exp --save</code>
oder laden Sie es als Zip -Datei herunter.
dann auf Seite.html:
<code>var ApgExp = require("apg-exp"); var exp = new ApgExp(pattern, flags); var result = exp.exec(stringToMatch);</code>
Sie können auch RAWGIT verwenden, um CDN -Versionen direkt aus dem GitHub -Quellcode zu erstellen. Lesen Sie jedoch unbedingt keine Verfügbarkeit oder Support -Garantie (lesen Sie tatsächlich die gesamten FAQ).
Alle Beispiele in diesem Tutorial verwenden Folgendes.
<code>git clone https://github.com/ldthomas/apg-js2-exp.git apg-exp</code>
Diese Dateien werden auf dem MaxCDN -Server zwischengespeichert und Sie können sie verwenden, um zu testen, solange sie verfügbar sind. In Produktionsumgebungen sollten Sie jedoch Kopien von ApGExp-min.js und apGexp.css auf Ihrem eigenen Server platzieren, um den Zugriff zu gewährleisten und in Ihre Seite nach dem besten Weg für Ihre Anwendung aufzunehmen.
(Der folgende Inhalt wurde aufgrund der Länge des Artikels abgeschnitten. Bitte geben Sie den nachfolgenden Teil für die fortgesetzte Verarbeitung an)
Das obige ist der detaillierte Inhalt vonEine Alternative zu regulären Ausdrücken: apg-exp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!