Bonjour !
Qui n'a jamais utilisé d'expressions régulières pour vérifier la bonne cohérence d'une chaine de caractères?
C'est super pratique de voir que si une adresse ip ne respecte pas le format "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$", ça ne sera pas une vraie ip (4 paquets de 3 chiffres maximum séparés par des "."), mais ce modèle de regexp ne suffit pas.
On peut toujours affiner la chaine en disant que l'adresse IP doit respecter le format "^(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])$", on restreint donc les paquets de chiffres à 255 maximum, c'est beaucoup mieux.
Mais comment vérifier qu'une adresse IP fait partie du bon réseau "aaa.bbb.ccc.ddd/xx" ? générer la regexp qui vérifiera ça est plutôt compliqué...
Je vous propose donc un script dont le but est de créer cette regexp, qui permettra de vérifier qu'une adresse IP matche bien le réseau voulu.
Exemple 1 :
- J'ai un réseau en 192.168.194.0/24, les adresses sont donc du type 192.168.194.XXX
=> Regexp obtenue : "^192\.168\.194\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])$"
Exemple 2 :
- J'ai un réseau en 192.168.194.0/22 (équivalent à 192.168.192.0/22), les adresses sont donc du type 192.168.{192,193,194,195}.XXX
=> Regexp obtenue : "^192\.168\.19[2-5]\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])$"
Exemple 3 :
- J'ai un réseau en 192.168.128.0/18, les adresses sont donc du type 192.168.{128-191}.XXX
=> Regexp obtenue : "^192\.168\.(12[8-9]|1[3-8][0-9]|19[0-1])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])$"
Je vous fournis donc le script suivant à titre d'exemple, il peut très certainement être amélioré, mais il fonctionne plutôt bien.
A bientôt!
[Ex] Générer une regexp pour un intervalle d'adresses IP
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- ZDS
- Membre émérite
- Messages : 554
- Enregistré le : jeu. 10 juin 2010 10:35
- Localisation : 22300 Cul-d'chouette Langue-de-vache
- Status : Hors ligne
[Ex] Générer une regexp pour un intervalle d'adresses IP
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
- sksbir
- Niveau 7
- Messages : 384
- Enregistré le : lun. 26 oct. 2009 17:57
- Localisation : Lyon
- Status : Hors ligne
Re: [Ex] Générer une regexp pour un intervalle d'adresses IP
L'approche est intéressante, et permettrait certainement d'améliorer le code des fonctions proposées ici:
http://www.autoitscript.com/forum/topic ... entry51444
archrival y propose en effet une fonction _Subnet et surtout _SameSub .
En tout cas, on sent que tu es à fond dans les expressions régulières.
http://www.autoitscript.com/forum/topic ... entry51444
archrival y propose en effet une fonction _Subnet et surtout _SameSub .
En tout cas, on sent que tu es à fond dans les expressions régulières.

- ZDS
- Membre émérite
- Messages : 554
- Enregistré le : jeu. 10 juin 2010 10:35
- Localisation : 22300 Cul-d'chouette Langue-de-vache
- Status : Hors ligne
Re: [Ex] Générer une regexp pour un intervalle d'adresses IP
CHALLENGE ...
... ACCEPTED !
Je vais tenter de faire ça dans le weekend, ca pourrait servir comme petit outil pour n'importe quel langage 

ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !