2015-01-09 2 views
0

У меня проблема с проверкой доменов. Что я делаю не так?Regex help - домен не проверяется

 Regex re = new Regex("^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\\.[a-zA-Z]{2,}$"); 
     if (re.IsMatch(domain.Text)) 
//   if (Regex.IsMatch(domain.Text, @"^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\\.[a-zA-Z]{2,}$")) 
      warningLabel.Text = "Domain format is invalid!"; // domain: " + domain.Text; 

Я проверил с Regex проверки и получил «ваш шаблон совпадает, но там были не (захват (группы)) в нем, что совпавшие ничего в строке темы.»

Почему у меня нет ошибок на недопустимых символах?

спасибо.

+1

Что такое test_string – vks

+0

Какова ценность 'domain.Text'? –

+0

Я вступил в тест, com - я ожидаю, что это значение потерпит неудачу. Однако это всегда было правдой. Теперь я понимаю, что у меня было бы (! Re.IsMatch (...)) –

ответ

1

ваш Regex в основном правильно (но смотрите ссылку ниже), и этот метод испытаний подтверждает:

public static void Test() 
     { 
      Regex re = new Regex("^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\\.[a-zA-Z]{2,}$"); 
      var m=re.Match("test.com"); 
      Console.WriteLine(m.Groups[0].Value); 
      m= re.Match("more-messy-domain-0234-example.xx"); 
      Console.WriteLine(m.Groups[0].Value); 
     } 

Воспроизводит:

TEST.COM

более-грязно-domain0234- example.xx

Примечание: есть хорошее обсуждение regex для доменных имен здесь: Domain name validation with RegEx

Есть несколько тонких ситуаций, которые не включены в ваше регулярное выражение.