2013-08-09 15 views

答えて

12

あなたは天候文字列が有効なIPであるかどうかをチェックし、検証するInetAddressValidatorクラスを使用することができます。

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

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

これを試してください。

3

Regexesが行います。単純なものと複雑なものがあります。

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

はこのようにそれを使用してください:簡単なものは、この正規表現である

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

しかし、これは有効なIPアドレスではありませんこれは、同様に999.999.999.999と一致します。この1つは正しく仕事の世話をする

(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で利用できる巨大な正規表現があります。これを使用する場合は、\を別の\で逃すことを忘れないでください。


あなたは巨大な正規表現のファンではない場合、あなたはこのコードを使用することができます:

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

これは優れた答えである、と彼は明らかに優れJavaでREGEXを知っています私がするよりも、これで行く。私はREGEXの世界ではかなり新しく、まだJAVAでそれを使用していません。 – CamelopardalisRex

+0

非常に良い。また、Groovyでは '/ regex /'という文字列を使うことができるので、エスケープを必要とせず、 '==〜'演算子を使って正規表現のマッチをチェックすることができます – Will

1

アンオブジェクト指向の方法:あなたがBootStrap.groovyにこれを追加しなければならない、ことが知られて

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; 
    } 


} 
関連する問題