Prüfen, ob IPv4 Adresse valide ist (bzw. ihre Syntax)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
the-wiz
User
Beiträge: 8
Registriert: Mittwoch 13. Mai 2009, 16:58

Ok, der Titel ist selbsterklärend. Ob sie online ist, soll natürlich nicht geprüft werden.

http://ipcheck.sourceforge.net/ habe ich schon gefunden, aber 5000 Zeilen nur für so ein Furz? Ich hoffe ihr wisst da nen Geheimtipp ;-)
BlackJack

Ähm, `ipcheck.py` ist nicht dazu da um IP-Darstellungen auf syntaktische Korrektheit zu prüfen. Kann sein, dass das Programm das irgenwo auch macht, aber der Zweck ist ein anderer.

Ansonsten musst Du Dir einfach klar werden welche Darstellungen von IPv4-Adressen Du überprüfen möchtest, wie die aufgebaut sind, und dann halt Code schreiben, der die Überprüfung macht. Für die einfachen, üblichen Fälle ist das nun echt nicht besonders schwer.
the-wiz
User
Beiträge: 8
Registriert: Mittwoch 13. Mai 2009, 16:58

Hier habe ich etwas gefunden: http://www.phpforum.de/forum/showthread.php?t=183189

Ich glaube

Code: Alles auswählen

/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/
reicht mir
OverNord
User
Beiträge: 72
Registriert: Donnerstag 24. Januar 2008, 11:59
Kontaktdaten:

Das kann man aber auch schöner und kürzer schreiben

Code: Alles auswählen

^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
BlackJack

Wobei das auch '999.999.999.999' als IP-Adresse anerkennen würde.
the-wiz
User
Beiträge: 8
Registriert: Mittwoch 13. Mai 2009, 16:58

BlackJack hat geschrieben:Wobei das auch '999.999.999.999' als IP-Adresse anerkennen würde.
Ich glaube das würde nicht viel ausmachen...
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich biete folgende Variante, die ohne reguläre Ausdrücke auskommt und sicherstellt, dass die 4 Zahlen zwischen 0 und 255 liegen:

Code: Alles auswählen

def valid_ip(s):
	try: return len([chr(int(i)) for i in s.split(".")]) == 4
	except: return False
Stefan
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Man kann sich das Leben natürlich auch einfacher ohne RE machen:

Code: Alles auswählen

import socket
def valid_ip(s):
    try: return bool(socket.inet_aton(s))
    except socket.error: return False
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten