Java regex для принятия допустимого имени хоста, IPv4 или адреса IPv6

У кого-либо есть польза (предпочтительно протестированный) regex для принятия только допустимого имени хоста DNS, IPv4 или адреса IPv6?

6
задан ljbade 24 June 2010 в 23:17
поделиться

2 ответа

Я понимаю, что вы можете быть вынуждены использовать regex. Однако, если возможно, лучше избегать использования регексов для этой задачи и вместо них использовать класс библиотеки Java для выполнения проверки.

Если вы хотите выполнять проверку и поиск DNS вместе, то InetAddress.getByName(String) будет хорошим выбором. Это позволит справиться с DNS, IPv4 и IPv6 за один раз, и вернет вам аккуратно обернутый экземпляр InetAddress, который содержит как DNS-имя (если оно предоставлено), так и IPv4 или IPv6-адрес.

Если вам нужна только синтаксическая проверка, то в Apache commons есть пара классов, которые справятся с этой задачей: DomainValidator and InetAddressValidator.

19
ответ дан 8 December 2019 в 04:51
поделиться

Guava имеет новый класс HostSpecifier . Он даже проверит, что имя хоста (если это имя хоста) оканчивается допустимым «общедоступным суффиксом» (например, «.com», «.co.uk» и т. Д.) На основе последнего общедоступного суффикса Mozilla. список. Это то, что вы НЕ хотели бы пытаться использовать с созданным вручную регулярным выражением!

5
ответ дан 8 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: