Latest web development tutorials

Reguläre Ausdrücke - Matching-Regeln

Grundmustervergleich

Alle beginnen mit den Grundlagen. Muster ist ein regulärer Ausdruck die grundlegenden Elemente, die von einer Gruppe Beschreibung Zeichenfolge gekennzeichnet sind. Modus kann sehr einfach sein, die aus gewöhnlichen Strings, kann auch sehr komplex sein, stellen oft eine Reihe von Zeichen mit Sonderzeichen, wiederholt oder stellt den Kontext. Zum Beispiel:

^once

Dieses Modell enthält ein Sonderzeichen ^, was darauf hinweist, dass das Muster diejenigen passt nur einmal mit der Zeichenkette beginnen. Zum Beispiel ist die Musterzeichenfolge "es war einmal" Spiel passen nicht zusammen "Es gab einmal ein Mann aus NewYork war". Als solches Symbol ^ den Anfang des gleichen zeigt auf $ Symbole am Ende eines bestimmten Modus diese Strings entsprechen.

bucket$

Das Modell und "Wer all dieses Geld in einen Eimer gehalten" Spiel nicht mit den "Eimer" entspricht. ^ Und wenn gleichzeitig verwendet $ Zeichen, stellt es eine genaue Übereinstimmung (string Modus). Zum Beispiel:

^bucket$

Spiele nur die Zeichenfolge "Eimer". Wenn ein Modell beinhaltet nicht die ^ und $, es enthält die Zeichenfolge eines der Muster zu entsprechen. Zum Beispiel: Modus

once

Mit Schnur

There once was a man from NewYork
Who kept all of his cash in a bucket.

Spiel.

Letters (einmal) in diesem Modus ist eine wörtliche Charakter, das heißt, sie sagte der Brief selbst, die Figur ist die gleiche. Einige andere etwas komplexere Charaktere wie Interpunktion und weiße Zeichen (Leerzeichen, Tabs, etc.), verwenden Sie die Escape-Sequenz. Alle Escape-Sequenzen beginnend mit einem Backslash (\). Tabs Escape-Sequenz ist: \ t. Wenn wir also, ob eine Zeichenfolge mit einer Lasche testen möchten beginnen, können Sie diesen Modus verwenden können:

^\t 

In ähnlicher Weise durch \ n "neue Zeile", \ r Wagenrücklauf vertreten. Andere Sonderzeichen können vor einem umgekehrten Schrägstrich, wie der Backslash selbst mit \\ genannten Zeitraum verwendet werden. Mit \. Figur, und so weiter.

Zeichen-Cluster

Programm im Internet, wird der reguläre Ausdruck häufig verwendet, Benutzereingaben zu validieren. Wenn ein Benutzer dann ein Formular abschickt, geben Sie die Telefonnummer, die Sie zu richten, Ihre Adresse, E-Mail-Adresse, Kreditkartennummer gültig ist, mit dem allgemeinen Charakter auf der wörtlichen basiert ist nicht genug.

Also, zu nutzen, um eine freie Modell unseren Ansatz zu beschreiben, es ist die Zeichencluster. Um ein Zeichen zu Darstellung aller Vokal-Cluster erstellen, setzen alle der Vokal Zeichen in einem eckigen Klammern:

[AaEeIiOoUu]

Dieses Muster passt zu jedem Vokal Zeichen, sondern stellen nur einen Charakter. Mit einem Bindestrich können eine Reihe von Zeichen darstellen, wie zum Beispiel:

[a-z] //匹配所有的小写字母 
[A-Z] //匹配所有的大写字母 
[a-zA-Z] //匹配所有的字母 
[0-9] //匹配所有的数字 
[0-9\.\-] //匹配所有的数字,句号和减号 
[ \f\r\t\n] //匹配所有的白字符

In ähnlicher Weise diese nur ein Zeichen darstellen, ist dies ein sehr wichtiger. Wenn Sie einen Kleinbuchstaben und eine nach der anderen Reihe von Zahlen, wie "z2", "t6" oder "g7" passen wollen, aber nicht "ab2", "r2d3" oder "b52", dann dieses Muster verwenden:

^[a-z][0-9]$

Obwohl die [az] im Namen der 26 Buchstaben des Bereichs, aber hier ist es nur das erste Zeichen Klein String-Matching.

Wie bereits erwähnt ^ stellt den Anfang der Zeichenfolge, aber es hat auch eine andere Bedeutung. Wenn in einem Satz von eckigen Klammern verwendet ^ ist, dass es "nicht" oder "Ausschluss" bedeutet bedeutet, häufig verwendet, um ein Zeichen zu beseitigen. Auch das vorherige Beispiel verwenden, bitten wir erste Zeichen darf keine Zahl sein:

^[^0-9][0-9]$

Dieser Modus "und 5", "g7" und "-2" wird abgestimmt, aber mit der "12", "66" ist kein Spiel. Hier sind ein paar Beispiele für bestimmte Zeichen nicht enthalten:

[^a-z] //除了小写字母以外的所有字符 
[^\\\/\^] //除了(\)(/)(^)之外的所有字符 
[^\"\'] //除了双引号(")和单引号(')之外的所有字符

Sonderzeichen "." (Punkt, Punkt) im regulären Ausdruck verwendet, um die zusätzlich zu der "neue Zeile" aller Zeichen darstellen. Also das Muster "^ 0,5 $" und zwei beliebige Zeichen bis zum Ende der Nummer 5 und der Matchstring in anderen nicht "neue Zeile" Zeichen am Anfang. Modus. "" Können jeden String, zusätzlich zu den leeren String und enthält nur eine "neue Linie" string.

PHP regulären Ausdruck einige integrierte in universellen Charakter Cluster hat, die Liste ist wie folgt:

字符簇 描述
[[:alpha:]] 任何字母
[[:digit:]] 任何数字
[[:alnum:]] 任何字母和数字
[[:space:]] 任何空白字符
[[:upper:]] 任何大写字母
[[:lower:]] 任何小写字母
[[:punct:]] 任何标点符号
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]

OK wiederholt

Bis jetzt wissen Sie bereits, wie ein Brief oder eine Nummer zu entsprechen, aber mehr Fällen können Sie ein Wort oder einen Satz von Zahlen übereinstimmen soll. Ein Wort hat eine Reihe von Briefen, eine Gruppe von mehreren Figuren in ungerade Zahl. Mit dem Zeichen oder Zeichen hinter dem Cluster von geschweiften Klammern ({}) verwendet, um die Anzahl der Wiederholungen des vorhergehenden Inhalt zu bestimmen.

字符簇 描述
^[a-zA-Z_]$ 所有的字母和下划线
^[[:alpha:]]{3}$ 所有的3个字母的单词
^a$ 字母a
^a{4}$ aaaa
^a{2,4}$ aa,aaa或aaaa
^a{1,3}$ a,aa或aaa
^a{2,}$ 包含多于两个a的字符串
^a{2,} 如:aardvark和aaab,但apple不行
a{2,} 如:baad和aaa,但Nantucket不行
\t{2} 两个制表符
.{2} 所有的两个字符

Diese Beispiele beschreiben die drei verschiedenen Klammern Gebrauch. Eine Zahl, {x} bedeutet "das Zeichen oder die Zeichen vor dem Cluster nur x-mal erscheint", eine Zahl Komma, {x,} bedeutet "der Inhalt vor der Anzahl, wie oft x oder mehr erscheint", zwei mit Komma getrennten Zahlen, {x, y}, dass "der Inhalt vor mindestens x mal angezeigt, aber nicht mehr als y-mal." Wir können das Modell, um mehr Wörter oder Zahlen erweitern:

^[a-zA-Z0-9_]{1,}$ //所有包含一个以上的字母、数字或下划线的字符串 
^[1-9][0-9]*$ //所有的正数 
^\-{0,1}[0-9]{1,}$ //所有的整数 
^[-]?[0-9]+\.?[0-9]+$ //所有的浮点数

Das letzte Beispiel ist, nicht gut verstanden ist es nicht? So Kanba: ([-]) (. \) Und alle mit einem optionalen Minuszeichen am Anfang (^), gefolgt von einer oder mehreren Ziffern ([0-9] +) und einem Komma Diskussion an einer oder mehreren Stellen ([0-9] +), und wird nicht durch irgendetwas anderes ($) gefolgt. Im Folgenden finden Sie weitere einfache Methode verwendet werden wissen können.

"?" Und Sonderzeichen {0,1} gleich sind, stellen sie: "0 oder 1 vor" oder "vor dem Inhalt ist optional." So können nur Beispiele wie vereinfacht werden:

^\-?[0-9]{1,}\.?[0-9]{1,}$

Sonderzeichen "*" und {0,} gleich sind, sie alle repräsentieren die "0 oder mehr der vorhergehenden Inhalt." Schließlich werden die Zeichen "+" und {1} gleich sind, zeigt dies "1 oder mehreren der vorhergehenden content", so daß die obigen vier Beispielen können geschrieben werden als:

^[a-zA-Z0-9_]+$ //所有包含一个以上的字母、数字或下划线的字符串 
^[0-9]+$ //所有的正数 
^\-?[0-9]+$ //所有的整数 
^\-?[0-9]*\.?[0-9]*$ //所有的浮点数

Natürlich ist dies nicht grundsätzlich die technische Komplexität von regulären Ausdrücken reduzieren, aber können sie leichter lesbar zu machen.