using System.Text.RegularExpressions;
public static void Main()
Console.WriteLine(IsDomainValid("example.com"));
Console.WriteLine(IsDomainValid("try.direct"));
Console.WriteLine(IsDomainValid("my-example.com"));
Console.WriteLine(IsDomainValid("subdomain.example.com"));
Console.WriteLine(IsDomainValid("example.com"));
Console.WriteLine(IsDomainValid("example23.com"));
Console.WriteLine(IsDomainValid("regexp-1222.org"));
Console.WriteLine(IsDomainValid("read-book.net"));
Console.WriteLine(IsDomainValid("org.host.org"));
Console.WriteLine(IsDomainValid("org.host.org"));
Console.WriteLine(IsDomainValid("velmart.shop-products.md"));
Console.WriteLine(IsDomainValid("ip2email.terronosp-222.lb"));
Console.WriteLine(IsDomainValid("stack.com"));
Console.WriteLine(IsDomainValid("sta-ck.com"));
Console.WriteLine(IsDomainValid("sta---ck.com"));
Console.WriteLine(IsDomainValid("9sta--ck.com"));
Console.WriteLine(IsDomainValid("sta--ck9.com"));
Console.WriteLine(IsDomainValid("stack99.com"));
Console.WriteLine(IsDomainValid("99stack.com"));
Console.WriteLine(IsDomainValid("sta99ck.com"));
Console.WriteLine(IsDomainValid("sub.do.com"));
Console.WriteLine(IsDomainValid("ss.sss-ss.ss"));
Console.WriteLine(IsDomainValid("s.sss-ss.ss"));
Console.WriteLine(IsDomainValid("s.s-s.ss"));
Console.WriteLine(IsDomainValid("test.t.te"));
Console.WriteLine("INVALID TESTS");
Console.WriteLine(IsDomainValid("@example.ru:?"));
Console.WriteLine(IsDomainValid("example22:89"));
Console.WriteLine(IsDomainValid("@jefe@dd.ru@22-"));
Console.WriteLine(IsDomainValid("example.net?1222"));
Console.WriteLine(IsDomainValid("example.com:8080:"));
Console.WriteLine(IsDomainValid(".example.com:8080:"));
Console.WriteLine(IsDomainValid("---test.com"));
Console.WriteLine(IsDomainValid("$dollars$.gb"));
Console.WriteLine(IsDomainValid("sell-.me"));
Console.WriteLine(IsDomainValid("open22.the-door@koll.ru"));
Console.WriteLine(IsDomainValid("mem-.wer().or%:222"));
Console.WriteLine(IsDomainValid("pop().addjocker.lon"));
Console.WriteLine(IsDomainValid("regular-l=.heroes?"));
Console.WriteLine(IsDomainValid(" ecmas cript-8.org "));
Console.WriteLine(IsDomainValid("example.com::%"));
Console.WriteLine(IsDomainValid("example:8080"));
Console.WriteLine(IsDomainValid("example"));
Console.WriteLine(IsDomainValid("examaple.com:*"));
Console.WriteLine(IsDomainValid("-test.test.com"));
Console.WriteLine(IsDomainValid("-test.com"));
Console.WriteLine(IsDomainValid("dd-.test.com"));
Console.WriteLine(IsDomainValid("dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd-.test.com"));
Console.WriteLine(IsDomainValid("d-.test.com"));
private static bool IsDomainValid(string DomainName)
if (DomainName.Split('.').Length <= 1) return false;
if (DomainName[0] == '.' || DomainName[DomainName.Length - 1] == '.') return false;
if (DomainName[0] == '-' || DomainName[DomainName.Length - 1] == '-') return false;
if (DomainName.Split('.')[0] == "-" || DomainName.Split('.')[0][DomainName.Split('.')[0].Length - 1] == '-') return false;
if (Regex.IsMatch(DomainName, "[\\.]{2}")) return false;
if (Uri.CheckHostName(DomainName) == UriHostNameType.IPv4) return false;
if (!Regex.IsMatch(DomainName, "^[a-zA-Z_0-9.-]+$")) return false;