# regulärer ausdruck zur überprüfung von ip-adresse?



## gondor (6. Dez 2004)

hallo!

wie lautet ein regulärer ausdruck zum überprüfen von ip-adressen?


```
REGEX_DATE = "?";
validIP = ip_.matches(REGEX_DATE);
```

danke für hilfe.


----------



## Wildcard (6. Dez 2004)

In etwa so:


```
("(\\d{1,3}.){3})(\\d{1,3}")
```


----------



## gondor (6. Dez 2004)

wind die klammern richtig gesetzt?

bekomme eine fehlermeldung:

```
Exception occurred during event dispatching:
java.util.regex.PatternSyntaxException: Unmatched closing ')' near index 12
(\d{1,3}.){3})(\d{1,3}
```



			
				Wildcard hat gesagt.:
			
		

> In etwa so:
> 
> 
> ```
> ...


----------



## Wildcard (6. Dez 2004)

Ach verdammt! Klammer vergessen!
Wie währ's mal mit Syntaxhighlightning im Board?  :wink: 

```
("((\\d{1,3}.){3})(\\d{1,3})")
```
@gondor: 
wie gesagt, 





> in etwa so


----------



## gondor (6. Dez 2004)

aber das format '127.0.0' wird auch akzeptiert...

```
IP wird auf folgendes Format (127.0.0) überprüft: true
```
hast du nochmal ein tipp?


----------



## Wildcard (6. Dez 2004)

Sollte eigentlich nicht. Hängt immer davon ab wie man den
RegEx benutzt. Kannst du mir ein paar Codestellen geben?


----------



## gondor (7. Dez 2004)

klar...


```
public boolean checkIP(String ip_) {

        boolean validIP = false;

        String REGEX_DATE = "(((\\d{1,3}.){3})(\\d{1,3}))";

        validIP = ip_.matches(REGEX_DATE);
        System.out.println("IP wird auf folgendes Format (" + ip_ + ") überprüft: " + validIP);

        return validIP;
    }
```


----------



## Wildcard (7. Dez 2004)

Oh man wie bescheuert!
"." steht bei RegEx ja für "any Character"!  
Hab ich wohl nicht nachgedacht  


```
String REGEX_DATE = "(((\\d{1,3}\\.){3})(\\d{1,3}))";
```


----------



## bygones (7. Dez 2004)

wieso in der mitte 3 ??
solche IPs kenn ich net 198.25.148.485 - daher dann 2 in der mitte...

richtige IP erkennen ist aber nicht ohne - weil dieser einfache ausdruck würde dann auch 0.0.0 oder 999.999.999 matchen, was meines wissens keinen gütligen IPs sind


----------



## foobar (7. Dez 2004)

> wieso in der mitte 3 ??


Die 3 bezieht sich auf die vorherige Gruppierung, damit kommt man dann auf 4 Blöcke die eine 1 bis 3 Stellige Zahl erwarten.



> richtige IP erkennen ist aber nicht ohne - weil dieser einfache ausdruck würde dann auch 0.0.0 oder 999.999.999 matchen, was meines wissens keinen gütligen IPs sind


Jepp, dieser Regex kann lediglich das Format auf Gültigkeit prüfen.


----------



## gondor (7. Dez 2004)

foobar hat gesagt.:
			
		

> Jepp, dieser Regex kann lediglich das Format auf Gültigkeit prüfen.



das reicht mir 

danke an 'Wildcard'


----------



## bygones (7. Dez 2004)

foobar hat gesagt.:
			
		

> > wieso in der mitte 3 ??
> 
> 
> Die 3 bezieht sich auf die vorherige Gruppierung, damit kommt man dann auf 4 Blöcke die eine 1 bis 3 Stellige Zahl erwarten


der sinn der 3 war mir klar -.hab mir eingebildet - IPs sehen anders aus


----------



## Wildcard (7. Dez 2004)

War ja nur als Anfang gedacht.
Wenn du das genauer prüfen willst würde ich eine IP in 7 CapturingGroups(4 Zahlen, 3 Punkte)
unterteilen, aus den Zahlen echt Zahlen machen, und dann prüfen ob sie <256 usw. sind.
Gibt ja diverse Regeln für gültige IP's die man nachlesen kann.


----------



## Bleiglanz (7. Dez 2004)

warum nicht gleich java.net.InetAdress verwenden...


----------

