私有IP正则表达式不适用于Java

时间:2015-11-16 13:07:55

标签: java regex ipv4

我试图让这个例子在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();
}

该方法在false

时返回ip = "192.168.122.1"

1 个答案:

答案 0 :(得分:2)

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

不能肯定地说,但它必须是编码问题。

尝试“重新输入”所有内容并将matches()更改为find()

如果您要使用matches方法,则必须匹配例如

的全文

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

其中find方法找到first token matched,如果可用,则返回true