来自给定的字符串:
String someIp = // some String
如果someIp是有效的Ip格式,我如何检查?
答案 0 :(得分:12)
您可以使用InetAddressValidator类检查并验证字符串是否为有效的IP。
import org.codehaus.groovy.grails.validation.routines.InetAddressValidator
...
String someIp = // some String
if(InetAddressValidator.getInstance().isValidInet4Address(someIp)){
println "Valid Ip"
} else {
println "Invalid Ip"
}
...
试试这个..,。
答案 1 :(得分:3)
正则表达会做。有简单的,更复杂的。一个简单的就是这个正则表达式:
\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}");
但这也将匹配999.999.999.999,这不是有效的IP地址。 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]?)
这个将正确地处理工作。如果你使用这个,请不要忘记使用另一个\
逃避每个\
。
如果您不是大型正则表达式的粉丝,可以使用以下代码:
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;
}
}
答案 2 :(得分:1)
面向对象的方式:
String myIp ="192.168.43.32"
myIp.isIp();
已知,您必须将此添加到 BootStrap.groovy :
String.metaClass.isIp={
if(org.codehaus.groovy.grails.validation.routines.InetAddressValidator.getInstance().isValidInet4Address(delegate)){
return true;
} else {
return false;
}
}