Prüfen ob eine Anzahl an Zahlenblöcke enthalten sind

CopWorker

Erfahrenes Mitglied
Hallo zusammen,

mal wieder was, was ich nicht verstehe.

Ich will aus einem String die IP-Adresse prüfen ob dies gültig ist, also aus 4 Zahlenblöcken besteht.
Wenn´s geht dann brauche ich die IP-Adresse mit Vorspann als Rückgabewert.

C#:
string strBrowser = "http://127.0.0.1:48249/api";

Ich habe folgende Pattern erstellt:
C#:
(http:\/\/[\d]{1,3}.[\d]{1,3}.[\d]{1,3}.[\d]{1,3})

Die IP-Adresse incl. Vorspann wird zurückgegeben.
Allerdings ist dies auch der Fall, wenn im String ein Punkt weniger drin ist, also die IP-Adresse ungültig ist.
C#:
string strBrowser = "http://127.0.01:48249/api";

Vielen Dank.
Grüße von CopWorker
 

Spyke

Premium-User
du musst den Punkt im Regex Escapen sonst wirds als beliebiges zeichen erachtet und du willst ja explizit den Punkt
\.
Code:
(http:\/\/[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3})
 

Spyke

Premium-User
ja der Punkt steht erstmal für ein beliebiges Zeichen,
und deshalb hat er auch einen Match bei deiner falschen IP Angabe gebracht

um dies zu verhindern und das wirklich der Punkt als Zeichen gesucht wird, und kein beliebiges Zeichen, muss der Punkt escapt werden.
 

CopWorker

Erfahrenes Mitglied
Hallo Zvoni,

so weit habe ich noch gar nicht gedacht.
Mir war erst mal wichtig, dass die IP Adresse aus 4 Blöcken besteht á 3 Dezimalwerten getrennt durch '.'.
Das nächste wäre gewesen den String zu spitten und jeden Wert zu konvertieren und auszuwerten.

RegEx fasziniert mich.
Das habe ich in einem anderen Beitrag bereits erwähnt:
Mit einem 1-Zeiler ist alles erledigt. Zumal das Gröbste.

Vielen Dank für die Hilfe.
Gruß CopWorker