我试图让这个例子在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]\\.)|(^192\\.168\\.)");
public static boolean isPrivateAndNotLocalIP(String ip)
{
return patternPrivateNotLocal.matcher(ip).matches();
}
该方法在false
ip = "192.168.122.1"
答案 0 :(得分:2)
我复制并粘贴你的代码以重试它,但令我惊讶的是它对我不起作用,但是,我重新输入所有内容并开始工作。
不能肯定地说,但它必须是编码问题。
尝试“重新输入”所有内容并将matches()
更改为find()
如果您要使用matches
方法,则必须匹配例如
(^10\\.)
应更改为(^10\\..*)
其中find
方法找到first token matched
,如果可用,则返回true