`
(?(DEFINE)
(?<PROTOCOL>[^:/#?\s]+://)
(?<LOGIN>[^:@/#?\s]+(?::[^@/#?\s]+)?@)
(?<TEXT_DOMAIN>[^./#?\s-:]+(?:-[^./#?\s-:]+)?\.)
(?<IP_DOMAIN>
(?&NOT_RESERVED_IP)
(?:
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)