2015-01-09 42 views
0

我在驗證域時遇到問題。我究竟做錯了什麼?正則表達式幫助 - 域未驗證

 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; 

我用正則表達式檢查檢查,並得到了「你的模式匹配,但沒有(捕獲(組))在它匹配的主題字符串中任何東西。」

爲什麼我不會在無效字符上遇到錯誤?

謝謝。

+1

什麼是test_string – vks

+0

'domain.Text'的值是什麼? –

+0

我輸入了測試,com - 我期望這個值失敗。但是,它總是如此。 我現在意識到我會擁有(!re.IsMatch(...)) –

回答

1

你的正則表達式是基本正確(見下文鏈接),而這種測試方法證實了這一點:

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

請注意這裏有一個關於域名正則表達式的很好的討論:Domain name validation with RegEx

有一些微妙的情況不包括在你的正則表達式中。