После небольшого перерыва в RegexBuddy (который является действительно великолепным инструментом для тестовой конструкции RegEx ), я придумал следующее:
^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$
Этот RegEx соответствует
Строка "localhost"
Эти перестановкипетлевого адреса IPv4
127.0.0.1
127.0.0.001
127.0.00.1
127.00.0.1
127.000.000.001
127.0000.0000.1
127.0.01
127.1
127.001
127.0.0.254
127.63.31.15
127.255.255.254
Эти перестановки адреса обратной связи IPv6
0:0:0:0:0:0:0:1
0000:0000:0000:0000:0000:0000:0000:0001
::1
0::1
0:0:0::1
0000::0001
0000:0:0000::0001
0000:0:0000::1
0::0:1
Этот RegEx не соответствует
Действительное имя сервера
servername
subdomain.domain.tld
Эти действительные IPv4адреса
Эти действительные адреса IPv6
0001::1
dead:beef::1
::dead:beef:1