2015-11-16 6 views
-1

Я попытался сделать этот пример работы в Java: Private IP Address Identifier in Regular ExpressionPrivate 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(); 
} 

метод возвращает мне false когда ip = "192.168.122.1"

+0

coud может добавить '. *' После каждой закрывающей скобки в вашем регулярном выражении, чтобы заставить ее работать. – SomeJavaGuy

+1

изменить "matches" to "find" – nafas

+0

@nafas 'patternPrivateNotLocal.matcher (ip) .find();' Не работает либо –

ответ

2

Я скопировал и вставил код, чтобы повторить его, но, к моему удивлению, это не сработало для меня, однако я перепечатал все, и он начал работать.

не может сказать точно, но это должны быть проблемы с кодировкой.

просто пытается «перепечатать» все и изменить matches() к find()

, если вы собираетесь использовать matches метод, вы должны соответствовать полному тексту, например

(^10\\.) должны быть изменены на (^10\\..*)

где find метод находит first token matched и возвращает true, если таковые имеются.