1

In Java, there is InetAdress which can do the validation. The problem is that it requires accessing the network for the dns query. How can I do the validation? There are hostname and ipv4 regex, But I can't find a regex to match ipv6 address.

Abhishek Bhardwaj
  • 1,164
  • 3
  • 14
  • 39
zhh
  • 2,346
  • 1
  • 11
  • 22
  • 1
    Look here: https://stackoverflow.com/questions/9208814/validate-ipv4-ipv6-and-hostname and here https://stackoverflow.com/questions/3114595/java-regex-for-accepting-a-valid-hostname-ipv4-or-ipv6-address – Nurlan Nabiyev Oct 27 '17 at 06:08
  • @Nurlan Nabiyev I'll checkout InetAdressValidator – zhh Oct 27 '17 at 06:14

1 Answers1

0

The IPAddress Java library can parse host names, IPv4 and IPv6 addresses, without triggering DNS lookup. Disclaimer: I am the project manager of that library.

Sample code:

HostName host = new HostName(hostStr);
try {
    host.validate();
    if(host.isAddress()) {
        System.out.println("address: " + host.asAddress());
    } else {
        System.out.println("host name: " + host);
    }
} catch(HostNameException e) {
    System.out.println(e.getMessage());
}

This will not do DNS lookup. More sample code at the wiki

Sean F
  • 4,344
  • 16
  • 30