2013-08-09 14 views

Odpowiedz

12

Można użyć InetAddressValidator klasę sprawdzić i zweryfikować pogodę ciąg jest ważny ip czy nie.

import org.codehaus.groovy.grails.validation.routines.InetAddressValidator 

... 
String someIp = // some String 
if(InetAddressValidator.getInstance().isValidInet4Address(someIp)){ 
    println "Valid Ip" 
} else { 
    println "Invalid Ip" 
} 
... 

Spróbuj tego ..,.

3

Regexes zrobi. Są proste i bardziej złożone. Prosty jeden jest ten regex:

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} 

Używaj go tak:

boolean isIP = someIP.maches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"); 

Ale to będzie pasować do 999.999.999.999, a także, co nie jest prawidłowy adres IP. Istnieje ogromna regex dostępny na regular-expressions.info:

(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 

Ten zajmie zadania poprawnie. Jeśli używasz tego, nie zapomnij uciec każdy \ z innym \.


Jeśli nie jesteś fanem ogromnych regexes, można użyć tego kodu:

public static boolean isIP(String str) 
{ 
    try 
    { 
     String[] parts = str.split("\\."); 
     if (parts.length != 4) return false; 
     for (int i = 0; i < 4; ++i) 
     { 
      int p = Integer.parseInt(parts[i]); 
      if (p > 255 || p < 0) return false; 
     } 
     return true; 
    } catch (Exception e) 
    { 
     return false; 
    } 
} 
+1

Jest przełożonym odpowiedź, a on wyraźnie wie regex w java lepszego niż ja, idź z tym. Jestem całkiem nowy w świecie REGEX i jeszcze go nie użyłem w JAVA. – CamelopardalisRex

+0

Bardzo dobrze. Ponadto w Groovy możesz użyć ciągu '/ regex /', w związku z czym nie potrzebujesz escapes, i użyj operatora '== ~', aby sprawdzić dopasowanie regex – Will

1

obiektowego sposób:

String myIp ="192.168.43.32" 
myIp.isIp(); 

Wiadomo, że trzeba dodać do BootStrap.groovy:

String.metaClass.isIp={ 
    if(org.codehaus.groovy.grails.validation.routines.InetAddressValidator.getInstance().isValidInet4Address(delegate)){ 
    return true; 
    } else { 
    return false; 
    } 


} 
Powiązane problemy