私有 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]\.)|(^192\.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 为真(如果有的话)
我试图让这个例子在 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();
}
方法在 ip = "192.168.122.1"
false
我复制并粘贴了您的代码以重试,但令我惊讶的是它对我不起作用,但是,我重新输入了所有内容,它开始工作了。
不能肯定,但一定是编码问题。
尝试 "retype" 一切并将 matches()
更改为 find()
如果你打算使用matches
方法,你必须匹配全文例如
(^10\.)
应该改为(^10\..*)
其中 find
方法发现 first token matched
和 return 为真(如果有的话)