Я хочу, чтобы проверить, является ли IP-адрес между 172.16.0.0 и 172.31.255.255Регулярное выражение для проверки IP
То, что я попытался это:
Pattern address = Pattern.compile("172.[16-31].[0-255].[0-255]");
Но это не работает, компилятор выдает сообщение об ошибке:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal character range near index 8
172.[16-31].[0-255].[0-255]
^
Поскольку это упражнение, это должно выполняться с регулярными выражениями.
Вы должны прочитать регулярное выражение учебника чтобы понять, как работает '[]'. Он не выполняет сравнение числового диапазона, он предназначен для сопоставления одиночных символов. – Barmar
'[16-31]' означает совпадение с одним символом, который является либо «1», либо в диапазоне от «6» до «3» (что не имеет смысла, поскольку диапазон должен быть низким и высоким) , – Barmar
Чтобы соответствовать числу от 16 до 31, оно должно быть '(1 [6-9] | 2 [0-9] | 3 [01])'. – Barmar