Maison interface Web js tutoriel Explication graphique et textuelle détaillée de la correspondance IP régulière

Explication graphique et textuelle détaillée de la correspondance IP régulière

Mar 30, 2018 am 11:36 AM
匹配 Graphiques et texte 详解

Cette fois, je vais vous apporter une explication graphique et textuelle détaillée de l'IP correspondante régulière. Quelles sont les précautions pour l'IP correspondante régulière Voici des cas pratiques, jetons un coup d'oeil.

Ici, je vais vous donner une explication détaillée d'une expression régulière qui correspond à une adresse IP

Les connaissances sur les expressions régulières seront mentionnées dans l'explication détaillée.

Avant de vous expliquer, permettez-moi d'abord de vous présenter les règles de génération d'adresses IP.

L'adresse IP est composée d'un nombre binaire de 32 chiffres converti en quatre chaînes décimales .

Comment convertir ? Expliqué ci-dessous :

Binaire : 1111111111111111111111111111111

Divisé en quatre parties : 11111111.11111111.11111111.11111111

Conversion : +2^6+2^5+2^4+ 2^3+2^2+2^1+2^0=255

Convertir en plage décimale : 0~255.0~255.0~255.0~255

C'est la plage de l'IP adresse.

En fonction des règles et de la plage de génération d'IP, nous pouvons utiliser des expressions régulières pour faire correspondre l'adresse IP, mais comment faire la correspondance ? Chacun sa méthode, je vais vous expliquer ici mon approche.

Sur la base des règles de chaîne des adresses IP, j'ai divisé l'expression correspondant aux adresses IP en deux parties à considérer.

La première partie : Match 3 0~255 (notez le point à la fin)

La deuxième partie : Match le dernier numéro 0~255

En d'autres termes , Faites d'abord correspondre la chaîne 0 ~ 255 (notez le point à la fin), puis répétez la correspondance 3 fois, puis faites correspondre la dernière partie numérique 0 ~ 255. C'est mon idée de faire correspondre les adresses IP.

Tout d'abord, je tiens à mentionner qu'il n'y a aucun moyen d'effectuer des opérations numériques avec des expressions régulières, nous ne pouvons donc pas utiliser d'opérations numériques pour filtrer la plage numérique de l'IP. Puisqu'il n'existe aucun moyen de filtrer la plage numérique d'IP à l'aide d'opérations numériques, quelles autres méthodes devrions-nous utiliser pour filtrer cette plage numérique ? Mon idée est de discuter en groupes, puis de fusionner ces groupes pour former la gamme numérique de l'IP.

① En supposant que le numéro IP est dans le chiffre des centaines, puis en fonction de la plage de numéros IP, nous pouvons dessiner les situations suivantes. En supposant que le premier nombre est 1, alors la plage de ce nombre est 1[0-9][0-9]. Cela ne devrait pas être difficile à comprendre, donc je ne l’expliquerai pas.

② En supposant que le premier nombre soit 2, alors selon les règles de plage des numéros IP, il y a deux situations ici. Pourquoi ? Pensez-y, le plus grand nombre est 255. Lorsque le chiffre des dizaines est 5, le chiffre unique ne peut être que 5 au maximum, n'est-ce pas ? Et lorsque le chiffre des dizaines est compris entre 0 et 4, le chiffre des unités peut être n’importe quel nombre, n’est-ce pas ?

Donc, les deux situations ici sont :

A, 2[0-4][0-9]

B, 25[0-5]

③. Après avoir analysé la situation des centaines, l'étape suivante est la situation des dizaines. S'il s'agit d'un chiffre des dizaines, alors le premier nombre devant le chiffre des dizaines ne peut pas être zéro, n'est-ce pas ?

La situation à dix chiffres peut donc être : [1-9][0-9]

④ Le reste est la situation à un chiffre, tout le monde devrait. arriver facilement à la conclusion, qui est : [0-9].

Après avoir analysé les quatre situations, nous avons abouti au regroupement de plages de numéros IP comme suit :

    1[0-9][0-9]

   2[0 - 4][0-9]

                        

                 

Comment exprimer le regroupement ci-dessus à l'aide d'expressions régulières ? C'est très simple, utilisez simplement le symbole régulier ou | et le symbole de regroupement (), donc l'expression régulière de regroupement ci-dessus est :

     (1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9])
Copier après la connexion

À ce stade, l'expression régulière pour la plage de nombres correspondante a été écrite, donc selon mes idées précédentes : Partie 1 : Match 3 0~255 (Faites attention au point à la fin) <.>

La deuxième partie : Faire correspondre le dernier nombre 0~255

Faisons correspondre la première partie de l'adresse IP. L'expression régulière est la suivante :

     (1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)|([1-9][0-9]\.)|([0-9]\.)
Copier après la connexion
J'ajoute. après chaque numéro Si vous atteignez un point, il correspondra à 0~255 (Faites attention au point suivant)

Alors, comment répéter le match trois fois ? C'est très simple. Il suffit de traiter ces cinq groupes dans leur ensemble et de répéter la correspondance trois fois. L'expression régulière est la suivante :

((1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)|([1-9][0-9]\.)|([0-9])\.)){3}
Copier après la connexion
La première partie a été mise en correspondance, et l'étape suivante est la suivante. pour épisser la deuxième partie. Nombres. La partie numérique a été clairement écrite ci-dessus, donc je ne l'expliquerai plus. Ce qui suit est l'expression régulière complète :

((1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)|([1-9][0-9]\.)|([0-9]\.)){3}((1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9]))
Copier après la connexion
À ce stade, l'expression régulière. pour la correspondance IP est sortie. Cependant, ce n'est pas la dernière expression régulière pour la correspondance IP. Pourquoi ? C'est très simple. L'expression régulière capturera et fera correspondre chaque groupe. L'adresse IP correspondante est divisée en autant de groupes, et le contenu de chaque groupe sera capturé par l'expression régulière. Je ne sais pas combien d'adresses IP ont été capturées ci-dessus. , haha, Alors comment supprimer le contenu groupé ? C'est très simple, utilisez ce symbole ?:

  ? : Le symbole est placé entre parenthèses (), ce qui signifie capturer le groupe mais pas le contenu de l'expression régulière. Donc, si on le met dans chaque groupe, ne supprimera-t-on pas le contenu du groupe ? Par conséquent, nous devons également ajouter ?: à chaque groupe, et l'expression régulière après l'ajout est la suivante :

(?:(?:1[0-9][0-9]\.)|(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))
Copier après la connexion
Même ici, l'adresse IP ne correspond toujours pas, et nous devons toujours utiliser ^ et $ pour le limiter. Le début et la fin de la chaîne, donc l'expression régulière finale pour faire correspondre les adresses IP est :

^(?:(?:1[0-9][0-9]\.)|(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))$
Copier après la connexion
C'est mon expression régulière la plus complète pour faire correspondre les adresses IP. et voir s'il y a des bugs. J'espère également que les lecteurs feront part de leurs inquiétudes afin de ne pas induire les autres lecteurs en erreur.

Les crochets () dans les expressions régulières ci-dessus apparaissent tous par paires. S'il y en a qui apparaissent par paires, veuillez les ajouter vous-même.

Voici mon test :

<?php
$pattern = &#39;/^(?:(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:1[0-9][0-9]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:2[0-5][0-5])|(?:25[0-5])|(?:1[0-9][0-9])|(?:[1-9][0-9])|(?:[0-9]))$/&#39;;
//正则匹配ip地址
$ip     = &#39;254.21.0.198&#39;;
preg_match($pattern,$ip,$out);
echo &#39;<pre class="brush:php;toolbar:false">';
print_r($out);
$ip     = '255.777.0.198';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '07.25.8.198';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '1207.25.8.198';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = 'qq107.25.8.198';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '\.\.\.107.25.8.198';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '\.\.\.  7.25.8.198';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '107.25.8.19822vvv';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '107.25.r8.1982';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '107.225.8.19';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '225.225.225.225';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '0.0.0.0';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '00.0.0.0';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '0.202.1.0';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '0.202.1.226';
preg_match($pattern,$ip,$out);
print_r($out);
$ip     = '249.202.1.0';
preg_match($pattern,$ip,$out);
print_r($out);
$s='';
for($i=0;$i<32;$i++){
  $s .= '1';
}
echo $s;
echo strlen($s);
Copier après la connexion
Je pense que vous maîtrisez la méthode après avoir lu le cas présenté dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le sujet. php site chinois !

Lecture recommandée :

Implémentation régulière des nombres en js avec des espaces séparés tous les quatre chiffres

En PHP Explication détaillée de gourmands, non gourmands et backtracking efficaces utilisant des expressions régulières (avec code)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée de la fonction mode en C++ Explication détaillée de la fonction mode en C++ Nov 18, 2023 pm 03:08 PM

Explication détaillée de la fonction mode en C++ En statistiques, le mode fait référence à la valeur qui apparaît le plus fréquemment dans un ensemble de données. En langage C++, nous pouvons trouver le mode dans n’importe quel ensemble de données en écrivant une fonction de mode. La fonction mode peut être implémentée de nombreuses manières différentes, deux des méthodes couramment utilisées seront présentées en détail ci-dessous. La première méthode consiste à utiliser une table de hachage pour compter le nombre d'occurrences de chaque nombre. Tout d’abord, nous devons définir une table de hachage avec chaque nombre comme clé et le nombre d’occurrences comme valeur. Ensuite, pour un ensemble de données donné, nous exécutons

Explication détaillée de l'obtention des droits d'administrateur dans Win11 Explication détaillée de l'obtention des droits d'administrateur dans Win11 Mar 08, 2024 pm 03:06 PM

Le système d'exploitation Windows est l'un des systèmes d'exploitation les plus populaires au monde et sa nouvelle version Win11 a beaucoup attiré l'attention. Dans le système Win11, l'obtention des droits d'administrateur est une opération importante. Les droits d'administrateur permettent aux utilisateurs d'effectuer davantage d'opérations et de paramètres sur le système. Cet article présentera en détail comment obtenir les autorisations d'administrateur dans le système Win11 et comment gérer efficacement les autorisations. Dans le système Win11, les droits d'administrateur sont divisés en deux types : administrateur local et administrateur de domaine. Un administrateur local dispose de tous les droits d'administration sur l'ordinateur local

Explication détaillée du fonctionnement de la division dans Oracle SQL Explication détaillée du fonctionnement de la division dans Oracle SQL Mar 10, 2024 am 09:51 AM

Explication détaillée de l'opération de division dans OracleSQL Dans OracleSQL, l'opération de division est une opération mathématique courante et importante, utilisée pour calculer le résultat de la division de deux nombres. La division est souvent utilisée dans les requêtes de bases de données. Comprendre le fonctionnement de la division et son utilisation dans OracleSQL est donc l'une des compétences essentielles des développeurs de bases de données. Cet article discutera en détail des connaissances pertinentes sur les opérations de division dans OracleSQL et fournira des exemples de code spécifiques pour référence aux lecteurs. 1. Opération de division dans OracleSQL

Explication détaillée de la fonction reste en C++ Explication détaillée de la fonction reste en C++ Nov 18, 2023 pm 02:41 PM

Explication détaillée de la fonction reste en C++ En C++, l'opérateur reste (%) est utilisé pour calculer le reste de la division de deux nombres. Il s'agit d'un opérateur binaire dont les opérandes peuvent être n'importe quel type entier (y compris char, short, int, long, etc.) ou un type nombre à virgule flottante (tel que float, double). L'opérateur reste renvoie un résultat du même signe que le dividende. Par exemple, pour l'opération de reste des entiers, nous pouvons utiliser le code suivant pour implémenter : inta=10;intb=3;

Explication détaillée du rôle et de l'utilisation de l'opérateur modulo PHP Explication détaillée du rôle et de l'utilisation de l'opérateur modulo PHP Mar 19, 2024 pm 04:33 PM

L'opérateur modulo (%) en PHP est utilisé pour obtenir le reste de la division de deux nombres. Dans cet article, nous discuterons en détail du rôle et de l'utilisation de l'opérateur modulo et fournirons des exemples de code spécifiques pour aider les lecteurs à mieux comprendre. 1. Le rôle de l'opérateur modulo En mathématiques, lorsqu'on divise un entier par un autre entier, on obtient un quotient et un reste. Par exemple, lorsque l’on divise 10 par 3, le quotient est 3 et le reste est 1. L'opérateur modulo est utilisé pour obtenir ce reste. 2. Utilisation de l'opérateur modulo En PHP, utilisez le symbole % pour représenter le module

Explication détaillée de la fonction d'appel système Linux system() Explication détaillée de la fonction d'appel système Linux system() Feb 22, 2024 pm 08:21 PM

Explication détaillée de la fonction d'appel système Linux system() L'appel système est une partie très importante du système d'exploitation Linux. Il fournit un moyen d'interagir avec le noyau système. Parmi elles, la fonction system() est l’une des fonctions d’appel système couramment utilisées. Cet article présentera en détail l’utilisation de la fonction system() et fournira des exemples de code correspondants. Concepts de base des appels système Les appels système sont un moyen permettant aux programmes utilisateur d'interagir avec le noyau du système d'exploitation. Les programmes utilisateur demandent au système d'exploitation en appelant des fonctions d'appel système

Explication détaillée de la commande Linux curl Explication détaillée de la commande Linux curl Feb 21, 2024 pm 10:33 PM

Explication détaillée de la commande curl de Linux Résumé : curl est un puissant outil de ligne de commande utilisé pour la communication de données avec le serveur. Cet article présentera l'utilisation de base de la commande curl et fournira des exemples de code réels pour aider les lecteurs à mieux comprendre et appliquer la commande. 1. Qu’est-ce que la boucle ? curl est un outil de ligne de commande utilisé pour envoyer et recevoir diverses requêtes réseau. Il prend en charge plusieurs protocoles, tels que HTTP, FTP, TELNET, etc., et fournit des fonctions riches, telles que le téléchargement de fichiers, le téléchargement de fichiers, la transmission de données, le proxy.

Expressions régulières PHP : correspondance exacte et exclusion des inclusions floues Expressions régulières PHP : correspondance exacte et exclusion des inclusions floues Feb 28, 2024 pm 01:03 PM

Expressions régulières PHP : correspondance exacte et exclusion Les expressions régulières d'inclusion floue sont un puissant outil de correspondance de texte qui peut aider les programmeurs à effectuer une recherche, un remplacement et un filtrage efficaces lors du traitement du texte. En PHP, les expressions régulières sont également largement utilisées dans le traitement des chaînes et la correspondance des données. Cet article se concentrera sur la façon d'effectuer une correspondance exacte et d'exclure les opérations d'inclusion floue en PHP, et l'illustrera avec des exemples de code spécifiques. Correspondance exacte La correspondance exacte signifie faire correspondre uniquement les chaînes qui répondent à la condition exacte, sans aucune variation ni mot supplémentaire.

See all articles