私有 IP 正则表达式在 Java 中不起作用

Private IP regex not working in Java

我试图让这个例子在 Java 中工作: Private IP Address Identifier in Regular Expression

我想检查一个 IP 是否是私有 IP,除了 127.x.x.x

但我要疯了,这段代码有什么问题?:

private static final Pattern patternPrivateNotLocal = Pattern.compile("(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^1‌​92\.168\.)");
public static boolean isPrivateAndNotLocalIP(String ip)
{
    return  patternPrivateNotLocal.matcher(ip).matches();
}

方法在 ip = "192.168.122.1"

时返回我 false

我复制并粘贴了您的代码以重试,但令我惊讶的是它对我不起作用,但是,我重新输入了所有内容,它开始工作了。

不能肯定,但一定是编码问题。

尝试 "retype" 一切并将 matches() 更改为 find()

如果你打算使用matches方法,你必须匹配全文例如

(^10\.)应该改为(^10\..*)

其中 find 方法发现 first token matched 和 return 为真(如果有的话)