2015-11-16 38 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