Heim  >  Artikel  >  Web-Frontend  >  So verwenden Sie reguläre Ausdrücke, um IP-Adressen und Domänennamen abzugleichen

So verwenden Sie reguläre Ausdrücke, um IP-Adressen und Domänennamen abzugleichen

php中世界最好的语言
php中世界最好的语言Original
2018-01-08 11:25:365557Durchsuche

Wir wissen, dass ein vollständiger Domänenname aus Stammdomänen, Domänen der obersten Ebene, Domänennamen der zweiten Ebene, dritten Ebenen usw. besteht und jede Ebene des Domänennamens durch Punkte und jede Ebene des Domänennamens getrennt ist besteht aus Buchstaben, Zahlen und Minuszeichen (der erste Buchstabe darf kein Minuszeichen sein), die Groß-/Kleinschreibung wird nicht beachtet und die Länge darf 63 nicht überschreiten.

Ein einzelner Name kann durch den regulärenAusdruck[a-zA-Z0-9][-a-zA-Z0-9]{0 dargestellt werden, 62} Zur Übereinstimmung enthält der vollständige Domänenname mindestens zwei Namen (z. B. google.com, bestehend aus google und com), und am Ende kann ein Punkt stehen, der die Stammdomäne darstellt (in der Spezifikation der vollständige Domänenname). ist derjenige mit einem Punkt am Ende, aber es wird allgemein davon ausgegangen, dass ein Domänenname, der mehr als zwei Namen enthält, auch ein vollständiger Domänenname ist, auch wenn danach kein Punkt steht.

Regulärer Ausdruck, der dem vollständigen Domänennamen entspricht:

[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?

Eine IP-Zeichenfolge bestehend aus vier Segmenten, jedes Segment ist eine Zahl von 0 bis 255 , Segmente werden durch Dezimalpunkte getrennt. Beispielsweise ist 61.139.2.69 eine zulässige IP-Zeichenfolge.

Wenn der reguläre Ausdruck als d{1,3}(.d{1,3}){3} geschrieben wird, ist dies zweifellos unverantwortlich, da er mit 300.400.555 übereinstimmen kann .666 So ein illegaler IP-String.

Um eine Zahl zwischen 0 und 255 abzugleichen, gibt es mehrere Übereinstimmungsmethoden. Die folgende ist eine davon:

Passende reguläre Ausdrucksbeschreibung

0 ~ 9 d einstellige Zahl
10 ~ 99 [1-9]d zweistellige Zahl
100 ~ 199 1dd dreistellige Zahl mit Hundertern als 1
200 ~ 249 2[0-4]d dreistellige Zahl , die Hunderterstelle ist 2, die Zehnerstelle ist 0~9
250~255 25[0-5] Dreistellige Zahl, die Hunderterstelle ist 2, die Zehnerstelle ist 5, die Einerstelle ist 0~5

Als regulärer Ausdruck geschrieben, das heißt: (d|([1-9]d)|(1dd)|(2[0-4]d)|(25[0-5])) , aber ein solcher regulärer Ausdruck wird beim Abgleichen mit einer Zeichenfolge wie 254, 2, 5 und 4 jeweils abgeglichen, was zu 3 Übereinstimmungen führt, die nicht den erwarteten Effekt erzielen können. Der richtige Weg besteht darin, die Reihenfolge umzukehren als ((25[0 -5])|(2[0 -4]d)|(1dd)|([1-9]d)|d), weil im passenden Verhalten von (xxx|yyy) die Die Suche erfolgt von links nach rechts .

Der vollständige reguläre Ausdruck lautet:

 ((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d)(\.((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d)){3}

Drücken Sie:

Zahlen mit einer höherwertigen 0 wie 061 können nicht zugeordnet werden.

Daher ist die Schreibweise oben (Teil 1.) die richtige und vollständige Version, während die Schreibweise (Teil 2.) eher einseitig ist

Ich glaube Nachdem Sie diese Fälle gelesen haben, beherrschen Sie die Methode. Weitere spannende Inhalte finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Verwandte Lektüre:

So verwenden Sie reguläre Ausdrücke, um JavaScript-Code hervorzuheben

Beispieleinführung zur Formularüberprüfung für reguläre Ausdrücke

So verwenden Sie reguläre Ausdrücke, um Telefonnummern, Mobiltelefonnummern und E-Mail-Adressen abzugleichen

Das obige ist der detaillierte Inhalt vonSo verwenden Sie reguläre Ausdrücke, um IP-Adressen und Domänennamen abzugleichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn