`
(?(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]?)
)
(?<NOT_RESERVED_IP>
(?!(?:1?0|224)(?:\.\d{1,3}){3}|
(?:192\.168|172\.16)(?:\.\d{1,3}){2}
)
)