I believe there's a pretty big propaganda against parsing IPs using regexes right here, they recommend NetAddr::IP,Net::IPv6Addr.
I saw many presentations about IPv6 where one of the slides was with this huge regex for matching IPv6 addresses, so I don't know, maybe this is useful -> Regex::IPv6.