检查字符串是否可以是java中的IP地址

时间:2014-03-24 15:56:16

标签: java parsing

我的程序有几个参数,其中一个参数必须是一个IP地址,用于指定它应该尝试连接的服务器。有没有一种简单的方法可以检查程序的参数是否可以表示为IP地址?

3 个答案:

答案 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实用程序类