2013-08-09 6 views

cevap

12

: Eğer büyük regexes hayranı değilseniz


, bu kodu kullanabilirsiniz.

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

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

Bunu deneyin ..,.

3

Düzenli ifadeler yapılacaktır. Basit olanlar ve daha karmaşık var.

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

böyle kullanın: Basit bir kimse bu regex olduğunu

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

Ama bu geçerli bir IP adresi değil de, hangi 999.999.999.999 eşleşir. Bu seferki doğru işin ilgilenir

(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]?) 

: regular-expressions.info geçerli büyük bir düzenli ifade yoktur. Bunu kullanırsanız, başka bir \ ile her bir \'dan kaçmayı unutmayın. Kontrol edip bir dize geçerli bir ip olup olmadığını hava doğrulamak için InetAddressValidator sınıfını kullanabilirsiniz

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

Bu üstün cevaptır ve o açıkça daha iyi java Regex bilir benden daha fazla, bununla git. REGEX dünyasında oldukça yeni ve henüz JAVA'da kullanmadım. – CamelopardalisRex

+0

Çok iyi. Ayrıca, Groovy'de '/ regex /' dizesini kullanabilir, böylece kaçışa gerek duymazsınız ve normal ifadeyi kontrol etmek için '== ~ operatörünü kullanabilirsiniz. – Will

1

bir nesne yönelimli yolu: Eğer BootStrap.groovy bunu eklemesi gerekir ki bilinen

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

:

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


}