Содержание
В данной статье мы рассмотрим пример простой программы, которая производит валидацию IP адреса с помощью регулярного выражения. Тестирование созданного класса мы будет производить средствами библиотеки TestNG.
Регулярное выражение для валидации IP адреса
Объяснение регулярного выражения:
Полностью это регулярное выражение означает буквально следующее: числа в интервале от 0 до 255 с последующей точкой («.») должны повторяться 4 раза, но в конце строки точки быть не должно. Корректными IP адресами являются все строки условного вида: 0-255.0-255.0-255.0-255 .
Корректные IP адреса
С точки зрения составленного регулярного выражения корректными IP адресами будут являться:
- 1.1.1.1 , 255.255.255.255 , 192.168.1.1 ;
- 10.10.1.1 , 132.254.111.10 , 26.10.2.10 ;
- 127.0.0.1 .
Некорректные IP адреса
С точки зрения нашего регулярного выражения некорректными IP адресами будут являться:
Пользователь вводит агрумент к скрипту IP адрес, подскажите как при помощи регулярок проверить корректность ввода IP адреса?
5 ответов 5
если хватит проверки четырёх трёхзначных чисел через точку, без проверки на превышение 255 и валидности и соответствия "белым"-"серым" диапазонам.
Ещё можно сделать whois "$IP" , в русской локализации на невалидный адрес whois всегда возвращает:
это работает и для локальных адресов, и для доменных имён.
довольно корректное выражение для проверки ipv4-адресов:
чтобы пропускало и адреса, в последнем октете которых написан ноль (см. дискуссию в комментариях), надо переставить последний ? чуть левее:
- -E — опция программы grep, включающая режим extended regexp. в данном случае используется лишь для того, чтобы не загромождать выражение обратными слэшами
- -q — опция программы grep, благодаря которой программа ничего не запишет в stdout, а лишь вернёт код возврата (совпадение есть — вернёт 0, иначе — вернёт не ноль)
- ^. $ — привязка к началу и концу строки
- (. ) — группа
- (. ) <3>— группа должна повториться ровно три раза
- (выражение1|выражение2|. ) — должно совпасть или выражение1 или выражение2 или .
- [. ] — любой из перечисленных символов («набор»)
- [0-5] — любая из цифр от нуля до пяти
- x? — символ x может встретиться ноль или один раз («символом» в данном случае может быть и группа (. ) и набор символов [. ]
- . — символ «точка» (без обратного слэша точка является квантификатором, совпадающим с любым (одним) символом)
2. Написать регулярное выражение, которое проверяет, является ли указанный файл нужного типа (на выбор .com,.exe или .jpg,.png,.gif и т. д.). Написать регулярное выражение, является ли ссылка URL на некоторый файл, и это действительно ссылка на картинку (например, http://site.com/folder/1.png), а не на любой файл.
3. *Написать регулярное выражение, которое проверяет, является выведенное значение «белым» IP-адресом (5.255.255.5 подойдет, а 172.16.0.1 нет)