【发布时间】:2016-02-17 14:21:56
【问题描述】:
我试图让这个例子在 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
【问题讨论】:
-
coud 可以在正则表达式的每个右括号后添加一个
.*以使其正常工作。 -
将“匹配”更改为“查找”
-
@nafas
patternPrivateNotLocal.matcher(ip).find();也不起作用 -
您的正则表达式中有 1 到 92 之间的不可见字符
-
@zapl 一个零宽度的非连接符和一个零宽度的空格。多么聪明的方法可以阻止人们从 internetz 盲目复制您的代码。