You want to extract a domain from URL. The list of URLs to support might be as below.
For this list you expect the domain sub.domain.com :
For this list you expect the domain domain.com:
For this list you expect the domain sub.sub.domain.com:
If all your URLs start with HTTP or HTTPS you may use Uri class.
var host = new Uri(url).Host;
host = host.Remove(0, 4);
In order to extract the same domain from URLs without specified protocol, you should use regular expression.
const string urlPattern = @"^(http://|https://)?(www.)?((?<domain>[a-zA-Z0-9.\-_]+)\/)";
var matchedGroups = Regex.Match(url, urlPattern).Groups;
if (matchedGroups.Count > 0)
var domainGroup = matchedGroups["domain"];
if (domainGroup != null)
This expression tells Regex to look for matches starting from the beginning of the string (^). Then look for some text which ends with / and extract another group without /. It successfully extracts all required domains which are stated above.
See example at RegexStorm.net.