检查String是否包含IP

时间:2014-05-24 16:39:16

标签: java

我如何检查包含IP地址的字符串? 例 “Hello guys”返回false “你好,这里是我的ip 22.27.0.0”返回true

谢谢!

2 个答案:

答案 0 :(得分:3)

掌握正则表达式(第三版)提供了一种模式,用于验证IPv4地址,在0-255范围内有四个以点分隔的整数:

^(?:[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])$

修改它以查找(而不是验证)IP,排除看起来像在较长的点数字符串中出现的IP的内容,以及Java字符串语法的转义反斜杠,我们可以在Java方法中将其呈现为:< / p>

public static String extractIP(String s) {
    java.util.regex.Matcher m = java.util.regex.Pattern.compile(
        "(?<!\\d|\\d\\.)" +
        "(?:[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])" +
        "(?!\\d|\\.\\d)").matcher(s);
    return m.find() ? m.group() : null;
}

如果在字符串中找到IP,则返回IP,否则返回null

要检查是否包含 IP,请执行if (extractIP(str) != null) ...

答案 1 :(得分:1)

不使用正则表达式,您需要两件事

  • 检查字符串何时是IP。 (IpChecker)
  • 检查字符串何时包含IP(IpDetector)
  • 目标字符串中的所有单词都用空格分隔。

这两种方法都非常简单。检查字符串中的每个部分是否与每个部分相对应。

检查字符串是否为IP

如果字符串是IP,则由4对数字组成,范围为0 - 255.

public class IpChecker {

public static boolean isIp(String ip) {

    // Check if the string is not null
    if (ip == null)
        return false;

    // Get the parts of the ip
    String[] parts = ip.split(".");

    if (parts.length != 4)
        return false;

    for (String s : parts) {
        try {
            int value = Integer.parseInt(s);

            // out of range
            if (value <= 0 || value >= 255) {
                return false;
            }
        } catch (Exception e) {
            return false;
        }
    }
    return true;
}

}

检查字符串何时包含IP 检查字符串中的每个单词。

public class IpDetector {

    // Detects an Ip given a phrace
    public static String detect(String ip) {

        // Check if the string is not null
        if (ip == null)
            return null;

        // Get the parts of the ip
        String[] parts = ip.split(" ");

        for (String part : parts) {
            if (IpParser.isIp(part)) {
                return part;
            }
        }
        return null;
    }
}

这是一个非常简单的想法,你可以改进它。