我的程序有几个参数,其中一个参数必须是一个IP地址,用于指定它应该尝试连接的服务器。有没有一种简单的方法可以检查程序的参数是否可以表示为IP地址?
答案 0 :(得分:4)
使用正则表达式匹配您的IP地址:
^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$
我相信有一个相关的答案here。
摘录:
private static final String PATTERN =
"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
public static boolean validate(final String ip){
Pattern pattern = Pattern.compile(PATTERN);
Matcher matcher = pattern.matcher(ip);
return matcher.matches();
}
答案 1 :(得分:1)
可靠的方法是使用Guava's InetAddresses.isInetAddress()
method。
否则,您可以使用正则表达式进行测试,以粗略匹配点分四位小数形式(即^\d{1,3}(\.\d{1,3}){3}$
,然后测试:
InetAddress.getByName(yourInputString)
地址格式正确(如果的字符串参数是IP文字,将不会进行任何名称解析,它只会检查其语法)。
请注意,Guava的方法具有IPv6的优势。
答案 2 :(得分:0)
尝试使用InetAddressValidato r实用程序类