in reply to Re^2: Regex host portion of IPv6 address
in thread Regex host portion of IPv6 address

UTSL
my %ipv6_patterns = ( 'preferred' => [ qr/^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}$/i, \&ipv6_parse_preferred, ], 'compressed' => [ ## No, this isn't pretty. qr/^[a-f0-9]{0,4}::$/i, qr/^:(?::[a-f0-9]{1,4}){1,6}$/i, qr/^(?:[a-f0-9]{1,4}:){1,6}:$/i, qr/^(?:[a-f0-9]{1,4}:)(?::[a-f0-9]{1,4}){1,6}$/i, qr/^(?:[a-f0-9]{1,4}:){2}(?::[a-f0-9]{1,4}){1,5}$/i, qr/^(?:[a-f0-9]{1,4}:){3}(?::[a-f0-9]{1,4}){1,4}$/i, qr/^(?:[a-f0-9]{1,4}:){4}(?::[a-f0-9]{1,4}){1,3}$/i, qr/^(?:[a-f0-9]{1,4}:){5}(?::[a-f0-9]{1,4}){1,2}$/i, qr/^(?:[a-f0-9]{1,4}:){6}(?::[a-f0-9]{1,4})$/i, \&ipv6_parse_compressed, ], 'ipv4' => [ qr/^(?:0:){5}ffff:(?:\d{1,3}\.){3}\d{1,3}$/i, qr/^(?:0:){6}(?:\d{1,3}\.){3}\d{1,3}$/, \&ipv6_parse_ipv4, ], 'ipv4 compressed' => [ qr/^::(?:ffff:)?(?:\d{1,3}\.){3}\d{1,3}$/i, \&ipv6_parse_ipv4_compressed, ], );