Vous pouvez utiliser les expressions régulières suivantes séparément ou en les combinant dans une expression OR conjointe.
ValidIpAddressRegex = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";
ValidHostnameRegex = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$";
ValidIpAddressRegex correspond aux adresses IP valides et aux noms d'hôte valides ValidHostnameRegex . Selon la langue que vous utilisez, \ pourrait devoir être échappé avec \.
ValidHostnameRegex est valide selon la RFC 1123 . À l'origine, la RFC 952 spécifiait que les segments de nom d'hôte ne pouvaient pas commencer par un chiffre.
http://en.wikipedia.org/wiki/Hostname
La spécification d'origine des noms d'hôtes dans la RFC 952 , stipulait que les étiquettes ne pouvaient pas commencer par un chiffre ou par un trait d'union et ne devaient pas se terminer par un trait d'union. Cependant, une spécification ultérieure ( RFC 1123 ) a permis aux étiquettes de nom d'hôte de commencer par des chiffres.
Valid952HostnameRegex = "^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$";
éxämplè.com
=xn--xmpl-loa1ab.com
) puis validés.123.456.789.0
et il est indiqué que c'est un nom d'hôte valide.Le regex de nom d'hôte de smink n'observe pas la limitation de la longueur des étiquettes individuelles dans un nom d'hôte. Chaque étiquette d'un nom d'hôte valide ne doit pas dépasser 63 octets.
Notez que la barre oblique inversée à la fin de la première ligne (ci-dessus) est la syntaxe du shell Unix pour diviser la longue ligne. Cela ne fait pas partie de l'expression régulière elle-même.
Voici juste l'expression régulière seule sur une seule ligne:
Vous devez également vérifier séparément que la longueur totale du nom d'hôte ne doit pas dépasser 255 caractères . Pour plus d'informations, veuillez consulter RFC-952 et RFC-1123.
la source
/^[a-z\d]([a-z\d\-]{0,61}[a-z\d])?(\.[a-z\d]([a-z\d\-]{0,61}[a-z\d])?)*$/i
Pour faire correspondre une adresse IP valide , utilisez l'expression régulière suivante:
au lieu de:
Explication
De nombreux moteurs d'expression régulière correspondent à la première possibilité de la
OR
séquence. Par exemple, essayez l'expression régulière suivante:Tester
Testez la différence entre le bon et le mauvais
la source
([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*
versus([a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]|[a-zA-Z0-9])(\.([a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])|[a-zA-Z0-9]))*
+
à la fin au lieu de*
pour voir l'échec.Je ne semble pas être en mesure de modifier le premier article, alors j'ajouterai ma réponse ici.
Pour le nom d'hôte - réponse facile, sur l'exemple egrep ici - http: //www.linuxinsight.com/how_to_grep_for_ip_addresses_using_the_gnu_egrep_utility.html
Bien que le cas ne prenne pas en compte les valeurs comme 0 dans le premier octet, et les valeurs supérieures à 254 (adresses IP) ou 255 (masque de réseau). Peut-être un énoncé supplémentaire si cela pourrait aider.
En ce qui concerne le nom d'hôte DNS légal, à condition que vous ne recherchiez que les noms d'hôte Internet (et non intranet), j'ai écrit ce qui suit, un mélange de shell / php mais il devrait être applicable comme toute expression régulière.
allez d'abord sur le site Web de l'ietf, téléchargez et analysez une liste de noms de domaine de niveau 1 légal:
Cela devrait vous donner un bon morceau de code re qui vérifie la légalité du nom de domaine supérieur, comme .com .org ou .ca
Ajoutez ensuite la première partie de l'expression conformément aux directives trouvées ici - http: //www.domainit.com/support/faq.mhtml?category=Domain_FAQ&question=9 (toute combinaison alphanumérique et le symbole «-», le tiret ne doit pas être dans le début ou la fin d'un octet.
Ensuite, mettez tout cela ensemble (exemple PHP preg_match):
Vous pouvez également ajouter une instruction if pour vérifier que la chaîne que vous vérifiez est inférieure à 256 caractères - http://www.ops.ietf.org/lists/namedroppers/namedroppers.2003/msg00964.html
la source
Il convient de noter qu'il existe des bibliothèques pour la plupart des langues qui le font pour vous, souvent intégrées à la bibliothèque standard. Et ces bibliothèques sont susceptibles d'être mises à jour beaucoup plus souvent que le code que vous avez copié une réponse Stack Overflow il y a quatre ans et oublié. Et bien sûr, ils analysent généralement l'adresse sous une forme utilisable, plutôt que de simplement vous donner un match avec un groupe de groupes.
Par exemple, détecter et analyser IPv4 dans (POSIX) C:
De toute évidence, ces fonctions ne fonctionneront pas si vous essayez, par exemple, de trouver toutes les adresses valides dans un message de discussion, mais même là, il peut être plus facile d'utiliser une expression rationnelle simple mais trop zélée pour trouver des correspondances potentielles, puis utilisez le bibliothèque pour les analyser.
Par exemple, en Python:
la source
la source
Je pense que c'est le meilleur regex de validation Ip. veuillez le vérifier une fois !!!
la source
la source
Cela fonctionne pour les adresses IP valides:
la source
la source
Voici une expression régulière que j'ai utilisée dans Ant pour obtenir une adresse IP d'hôte proxy ou un nom d'hôte à partir d'ANT_OPTS. Cela a été utilisé pour obtenir l'IP du proxy afin que je puisse exécuter un test Ant "isreachable" avant de configurer un proxy pour une JVM fourchue.
la source
\w
juste là, il ne capturera pas IP, seulement le nom d'hôte dans certaines situations.J'ai trouvé que cela fonctionne assez bien pour les adresses IP. Il valide comme la première réponse, mais il s'assure également que l'ip est isolé afin qu'aucun texte ou plusieurs nombres / décimales ne soient après ou avant l'ip.
la source
ces re sont utilisés uniquement pour la validation de ce type
ne fonctionne que si http://www.kk.com http://www.kk.co.in
ne fonctionne pas pour
http://www.kk.com/ http: //www.kk.co.in.kk
http://www.kk.com/dfas http://www.kk.co.in/
la source
essaye ça:
cela fonctionne dans mon cas.
la source
En ce qui concerne les adresses IP, il semble qu'il y ait un débat sur l'opportunité d'inclure des zéros de tête. C'était autrefois la pratique courante et généralement acceptée, donc je dirais qu'ils devraient être signalés comme valides, quelle que soit la préférence actuelle. Il existe également une certaine ambiguïté quant à savoir si le texte avant et après la chaîne doit être validé et, encore une fois, je pense que oui. 1.2.3.4 est une adresse IP valide mais 1.2.3.4.5 ne l'est pas et ni la partie 1.2.3.4 ni la partie 2.3.4.5 ne devraient donner lieu à une correspondance. Certaines des préoccupations peuvent être traitées avec cette expression:
La partie malheureuse ici est le fait que la partie regex qui valide un octet est répétée comme cela est vrai dans de nombreuses solutions proposées. Bien que cela soit meilleur que pour les instances du modèle, la répétition peut être entièrement éliminée si les sous-programmes sont pris en charge dans l'expression régulière utilisée. L'exemple suivant active ces fonctions avec le
-P
commutateur degrep
et tire également parti des fonctionnalités de recherche et de recherche. (Le nom de la fonction que j'ai sélectionné est «o» pour octet. J'aurais pu utiliser «octet» comme nom mais je voulais être concis.)La gestion du point peut en fait créer un faux négatif si les adresses IP sont dans un fichier avec du texte sous forme de phrases car la période a pourrait suivre sans qu'il fasse partie de la notation en pointillé. Une variante de ce qui précède résoudrait cela:
la source
la source
La nouvelle infrastructure réseau a des initialiseurs disponibles pour struct IPv4Address et struct IPv6Address qui gèrent très facilement la partie adresse IP. Faire cela en IPv6 avec une expression régulière est difficile avec toutes les règles de raccourcissement.
Malheureusement, je n'ai pas de réponse élégante pour le nom d'hôte.
Notez que l'infrastructure réseau est récente, elle peut donc vous obliger à compiler pour les versions récentes du système d'exploitation.
la source
que dis-tu de ça?
la source
sur php:
filter_var(gethostbyname($dns), FILTER_VALIDATE_IP) == true ? 'ip' : 'not ip'
la source
Vérification des noms d'hôte comme ... mywebsite.co.in, thangaraj.name, 18thangaraj.in, thangaraj106.in etc.,
la source
inet_aton
est assez bon.J'ai pensé à ce modèle de correspondance d'expression régulière simple pour la correspondance d'adresse IP \ d + [.] \ D + [.] \ D + [.] \ D +
la source
^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}
et bien sûr, ce ne sera pas la bonne façon. Si vous avez une langue pour écrire un script, vous aurez certainement accès à ses fonctions réseau. La meilleure façon de vérifier une IP RÉELLE est de dire au système de convertir et d'IP à son bon format puis de vérifier vrai / faux. En cas de Python j'utilisesocket.inet_aton(ip)
. Cas de PHP u besoininet_aton($ip)
.