2015-11-16 13 views
-1
不工作

我试图让在Java中完成这个示例: Private IP Address Identifier in Regular Expression私有IP正则表达式在Java中

我要检查,如果IP是一个私人性质,除了127.xxx

但我要去变得疯狂,什么是错误的验证码?:

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(); 
} 

该方法返回我falseip = "192.168.122.1"

+0

coud可以在正则表达式中的每个右括号后添加一个'。*'来使其工作。 – SomeJavaGuy

+1

将“matches”改为“find” – nafas

+0

@nafas'patternPrivateNotLocal.matcher(ip).find();'不起作用 –

回答

2

我复制并粘贴你的代码以重试它,但是对我来说它并不适合我,但是,我重新输入了所有内容并开始工作。

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

只是尝试“重新输入”一切,改变matches()find()

,如果你要使用matches方法,你必须例如

(^10\\.)全文匹配应改为(^10\\..*)

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