499 Shares 4830 views

PHP (regex) – was ist das? Beispiele und Überprüfen von regulären Ausdrücken

Wenn Sie mit Text in jedem modernen Programmiersprache arbeitet, Entwickler ständig mit den Zielen der Eingabevalidierung für die Einhaltung des gewünschten Muster, Such- und Testfragmente und andere Arten von Verarbeitungsvorgängen von Zeicheninformationen treffen ersetzen. Entwickeln Sie Ihre eigenen Validierungsalgorithmen führt zu Zeitverlust, die Code-Kompatibilität und die Komplexität bei der Entwicklung und Modernisierung.

Die rasante Entwicklung der Internets und die WEB-Design Sprachen erforderlich, um die Schaffung von vielseitigen und kompakten mittels Textverarbeitung mit einer Mindestmenge für diesen Code erforderlich. Es ist keine Ausnahme und ist sehr beliebt bei Anfängern und professionellen Entwicklern von PHP-Sprache. Die reguläre Ausdruck Sprache wie die Text-Vorlagen die Aufgabe, Umgang mit dem Text zu vereinfachen und Code für Dutzende und Hunderte von Linien reduzieren. Viele Probleme lassen sich überhaupt nicht, ohne es zu lösen.

Reguläre Ausdrücke in PHP

PHP-Sprache hat drei Mechanismen für die mit regulären Ausdrücken arbeiten – «ereg», «mb_ereg» und «Preg». Die häufigste ist die Schnittstelle «Preg», der Funktionen ermöglichen den Zugriff auf die Bibliothek der PCRE für reguläre Ausdrücke Unterstützung, die ursprünglich für die Sprache Perl entwickelt, die in dem PHP-Paket enthalten ist. Preg-seeking-Funktionen in einer Textzeichenfolge Anpassung gegeben, nach einem bestimmten Muster in der Sprache von regulären Ausdrücken.

Syntax Basics

Im Rahmen eines kurzen Artikels ist es unmöglich, im Detail der gesamten Syntax für reguläre Ausdrücke zu beschreiben, denn diese gibt es eine spezielle Literatur. Wir stellen nur die wichtigsten Elemente Möglichkeiten für Entwickler zu zeigen und die Codebeispiele zu verstehen.

In PHP ist regulärer Ausdruck formal sehr schwierig, definiert und daher die Beschreibung vereinfachen. Ein regulärer Ausdruck ist eine Textzeichenfolge. Es besteht aus einer speziellen Trennzeichen-Vorlage und den Modifikator den Weg anzeigt, es zu handhaben. Mögliche Aufnahme in den verschiedenen Alternativen und Wiederholungen von Mustern.

Zum Beispiel bei der Expression / d {3} – d {2} – d {2} / m – Teiler ist "/", gefolgt von der Vorlage, und das Symbol «m» ist der Modifikator.

Die ganze Kraft von regulären Ausdrücken codiert wird unter Verwendung von Meta-Zeichen. Die Hauptsprache metacharacter ist der Backslash – „“. Es ändert sich die Art der folgenden Zeichen auf der gegenüberliegenden (d. E. in einem gewöhnlichen Zeichen Wildcard umgewandelt und umgekehrt). Ein weiterer wichtiger metacharacter ist eine gerade Linie «|», die alternative Vorlage angibt. Weitere Beispiele für Meta-Zeichen:

^ Startobjekt oder eine Zeichenfolge
( starten Unter-Pattern
) End Unter-Pattern
{ Start quantifier
} Ende quantifier
d Nachkommastelle von 0 bis 9
D Jedes Zeichen, das keine Zahl ist
s leeres Symbol, Leerzeichen, Tab,
w Symbol-Wörterbuch

PHP, die Verarbeitung von regulären Ausdrücken, Raum als separates gültiges Zeichen betrachtet, so dass die Expression von XYZ und ABC WHERE unterschiedlich sind.

Subpattern

In PHP regulären Subpattern durch Klammern und sie werden manchmal als „Teilausdrücke“ bezeichnet. Führen Sie die folgenden Funktionen:

  1. Allocation Alternativen. Zum Beispiel kann das Wärmemuster (etwas | Vogel |) deckt sich mit den Worten „Wärme“, „Firebird“ und „hot“. Und ohne die Klammern wird es nur ein leerer String, „Vogel“ und „heiß“ sein.

  2. „Spektakulär“ UnterPattern. Das bedeutet, dass, wenn das Muster Teilzeichenfolge abgestimmt, dann alle Spiele zurück. Aus Gründen der Klarheit geben wir ein Beispiel. Angesichts der folgenden regulären Ausdruck: Der Gewinner erhält ((Gold | vergoldet) (Medaille | Tasse)) – und die Zeichenfolge für die Spiele „ die Gewinner einer Goldmedaille bekommt.“ Neben dem anfänglichen Satz, werden die Suchergebnisse ausgegeben werden: „Gold Medal“, „Medaillen“, „Gold“.

Operatoren Wiederholungen (kvadrifikatory)

In dem regulären Ausdruck Kompilieren ist oft notwendig, um die Wiederholung von Zahlen und Symbolen zu analysieren. Dies ist kein Problem, wenn nicht viele Wiederholungen. Aber was tun, wenn wir nicht wissen, ihre genaue Zahl? In diesem Fall ist es notwendig, spezielle Meta-Zeichen zu verwenden.

Eine Beschreibung der Wiederholungen verwendet kvadrifikatory – Metazeichen die Nummer angeben. Kvadrifikatory sind von zweierlei Art:

  • in Klammern gemeinsam;
  • reduziert.

Insgesamt Quantifikator durch die minimale und maximale Anzahl erlaubter Wiederholungen Element in Form von zwei Zahlen in den geschweiften Klammern, wie zum Beispiel x berührt {2,5}. Wenn die maximale Anzahl von Wiederholungen nicht bekannt ist, wird das zweite Argument nicht angegeben: x {2}.

Verkürzte quantifiers sind Symbole für die am häufigsten von Wiederholungen, um unnötige Überlastung Syntax zu vermeiden. Normalerweise gibt es drei Schnitte:

1. * – null oder mehr Wiederholungen, die auf {0,} äquivalent ist.

2. + – eine oder mehr Wiederholungen, dh {1} …

3.? – Null oder nur eine Wiederholung – {0,1}.

Beispiele regex

Für diejenigen, die reguläre Ausdrücke, Beispiele lernen – das beste Lehrbuch. Wir geben ein paar, die mit einem Minimum an Aufwand ihre Möglichkeiten zeigen. Der gesamte Code ist kompatibel mit PHP-Versionen 4.x und höher. Um das Verständnis der Syntax und Verwendung aller Sprachfeatures wir das Buch von J .. Friedl, „reguläre Ausdrücke“ empfehlen, die vollständig Syntax betrachtet, und es gibt Beispiele für reguläre Ausdrücke nicht nur PHP, sondern auch für eine Python, Perl, MySQL, Java, Ruby und C #.

Validierung E-Mail-Adresse

Aufgabe. Es ist eine Internet-Seite, auf der die Besucher-Adresse E-Mail angefordert werden. Regulärer Ausdruck muss die Richtigkeit der Adressen überprüfen, bevor das Senden von Nachrichten. Prüfen Sie garantiert nicht, dass die angegebene Postfach tatsächlich existiert und empfängt Nachrichten. Aber auszusondern offensichtlich falsche Adressen, es kann.

Entscheidung. Wie bei jeder Programmiersprache kann in PHP Regex E-Mail-Adresse Überprüfung auf verschiedene Weise implementiert werden, und die Beispiele in diesem Artikel sind nicht die letzte und einzige Wahl. Daher ist in jedem Fall werden wir eine Liste der Anforderungen zur Verfügung stellen, die berücksichtigt werden müssen bei der Programmierung und spezifische Implementierung hängt ganz von dem Entwickler.

So, dass der Ausdruck eine gültige E-Mail-Tests, sollten die folgenden Bedingungen überprüfen:

  1. Die Anwesenheit in der Startlinie das Symbol @, und es gibt keine Lücken.
  2. Der Domain-Teil der Adresse des @ -Zeichen enthält nur gültige Zeichen für Domain-Namen. Das gleiche gilt für den Namen des Benutzers.
  3. Wenn der Benutzername Überprüfung notwendig ist, die Anwesenheit von Sonderzeichen, wie beispielsweise einem Apostroph oder vertikale Linie zu bestimmen. Solche Symbole sind potentiell gefährlich und können in solchen Arten von Angriffen, die SQL-Injektion enthalten sein. Vermeidet Adressen.
  4. Benutzernamen erlauben nur einen Punkt, der in der Kette nicht die erste oder letzte Zeichen sein.
  5. Der Domainname muss mindestens zwei und nicht mehr als sechs Zeichen lang sein.

Beispiel all diese Bedingungen zu berücksichtigen ist in der folgenden Abbildung zu sehen ist.

Validierung eines URL

Aufgabe. Überprüfen Sie, ob die angegebene Textzeichenfolge ist eine gültige Adresse URL. Wieder einmal stellen wir fest, dass reguläre Ausdrücke URL-Überprüfung kann auf verschiedene Weise implementiert werden.

Entscheidung. Unsere letzte Version ist wie folgt:

/^(https?://)?([da-z.-]+).([az.]{2,6})([/w .-] *) * /? $ /

Jetzt seine Komponenten näher anhand der Zeichnung analysieren.

Anspruch 1 Bevor die URL sollte keine Zeichen haben
Anspruch 2 Überprüfen Sie das Vorhandensein der vorgeschriebenen Präfix «http»
Punkt 3 Es darf keine Symbole sein
Anspruch 4 Wenn es «s», die URL auf eine gesicherte Verbindung «https»
Anspruch 5 Erforderlich Teil des „//“
Anspruch 6 keine Zeichen
p 7-9. Verifizieren der ersten Level – Domain und die Anwesenheit von Punkt
p.10-13 Überprüfen der Domäne der zweiten Ebene zu schreiben und den Punkt
S. 14-17

Dateistruktur URL – eine Reihe von Zahlen, Buchstaben, Unterstrichen, Striche, Punkte und ein Schrägstrich am Ende

Überprüfen Sie die Kreditkartennummern

Aufgabe. Sie müssen die Validierung der eingegebenen Kreditkartennummer der häufigsten Zahlungssysteme implementieren. Eine Variante nur für Karten Visa und Mastercard.

Entscheidung. Wenn die Expression der Erstellung müssen Sie das mögliche Vorhandensein von Lücken im Eingangsraum berücksichtigen. Die Ziffern auf der Karte sind in Gruppen zum leichteren Lesen und Diktat aufgeteilt. Daher ist es nur natürlich, dass eine Person versuchen kann, eine Reihe auf diese Weise eingeben (dh. E. Leerzeichen verwenden).

Schreiben Sie einen universellen Ausdruck, berücksichtigt die möglichen Leerzeichen oder Bindestriche, ist komplizierter als einfach alle Zeichen außer Ziffern zu verwerfen. Daher empfehlen wir einen Platzhalter Ausdruck / D verwenden, die alle Zeichen außer Ziffern entfernt.

Jetzt können Sie direkt auf die Prüfnummer gehen. Alle Unternehmen, Kreditkartenunternehmen verwenden, um eine eindeutige Nummer Format. Im Beispiel wird es verwendet, und der Kunde muss nicht den Namen des Unternehmens geben – durch die Anzahl bestimmt wird. Visa-Karten beginnen immer mit den Nummern 4 und haben eine Länge von 13 oder 16 Ziffern. Mastercard beginnt im Bereich von 51 bis 55 mit einer langen Nummer 16. Als Ergebnis erhalten wir den folgenden Ausdruck:

Bevor die Reihenfolge der Verarbeitung kann weiter die letzten Ziffern der Nummer zu prüfen, die auf dem Luhn-Algorithmus berechnet wird.

Überprüfen Telefonnummer

Aufgabe. Überprüfung der Korrektheit der eingegebenen Telefonnummer.

Entscheidung. Die Anzahl der Stellen in den festen und mobilen Telefonnummern variiert stark je nach Land, so universell reguläre Ausdrücke überprüfen verwenden, Telefonnummer richtig unmöglich. Aber auch internationale Nummern haben ein strenges Format und perfekt für das Muster zu prüfen. Noch mehr, so dass mehr und mehr nationale Telefonbetreiber versuchen, den gleichen Standard zu erfüllen. Raumstruktur ist wie folgt:

+ CCC.NNNNNNNNNNxEEEE, wobei gilt:

– C – ist der Ländercode, bestehend aus 1-3 Ziffern.

– N – Zahl bis zu 14 Ziffern.

– E – optionale Erweiterung.

Plus ist ein unverzichtbares Element, und das Zeichen X ist nur vorhanden, wenn Erweiterung benötigt.

Als Ergebnis haben wir den folgenden Ausdruck:

^ + [0-9] {1,3 } [0-9] {4,14}. (:. X +)? $

Die Zahlen im Bereich

Aufgabe. Es ist notwendig, Zufall ganze Zahl von einem bestimmten Bereich zu gewährleisten. Darüber hinaus ist es notwendig, einen regulären Ausdruck nur die Zahlen aus dem Bereich zu finden.

Entscheidung. Hier sind ein paar Ausdrücke auf einige der häufigsten Fälle:

Bestimmen Stunde 1-24 ^ (1 [0-2] | [1-9]) $
Tag im Monat 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Sekunden oder Minuten 0-59 ^ [1-5]? [0-9] $
Eine Zahl von 1 bis 100 * (100 |? [1-9] [0-9]) $
Tag des Jahres 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Suche nach IP-Adressen

Aufgabe. Es ist notwendig, um zu bestimmen, ob eine bestimmte Zeichenfolge im IPv4-Format im Bereich von 000.000.000.000-255.255.255.255 eine gültigen IP-Adresse ist.

Entscheidung. Wie bei jedem Problem in der Sprache PHP, hat der reguläre Ausdruck viele varintov. Zum Beispiel dieses:

Online-Prüfung von Ausdrücken

Prüfen regex richtig für Anfänger wegen der Komplexität der Syntax schwierig sein kann, die sich von „normalen“ Programmiersprachen unterscheidet. Um dieses Problem zu lösen, gibt es viele Online-Tester Ausdrücke, die es leicht machen, die Richtigkeit der Vorlage überprüfen Sie in der realen Text erstellt. Der Programmierer geht in den Ausdruck und Datenüberprüfung und sehen sofort das Ergebnis der Verarbeitung. Normalerweise gibt es eine Referenzstrecke präsentieren, die die regulären Ausdrücke Details, Beispiele und Implementierung Unterschiede für die erweiterten Sprachen.

Aber voll Vertrauen Online-Dienste Ergebnisse nicht für alle Entwickler, die PHP verwenden empfohlen. Ein regulärer Ausdruck geschrieben und persönlich überprüft, wirft Qualifikation und garantieren die Abwesenheit von Fehlern.