2012-06-07 52 views
1

我需要一個只允許IP地址的文本框。我可以在一個Web應用程序中創建它,但是我無法在Windows應用程序中執行此操作。請幫我做..文本框只允許在Windows應用程序的IP地址

+0

試試這個[IP-文本框(http://www.codeproject.com/Articles/11576/IP-TextBox) – PresleyDias

+1

所以...它是一個Windows應用程序(Winforms,WCF,Silverlight)或Web應用程序(ASP.NET,ASP.NET MVC,...)...只是一個原因*** ASP.NET Windows應用程序* **,有點混亂...... – balexandre

+0

根據對Darren的問題的評論(刪除asp.net)進行編輯。 –

回答

2

使用此方法來驗證IP

public bool IsValidIP(string addr) 
    { 
     //create our match pattern 
     string pattern = @"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\. 
([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$"; 
     //create our Regular Expression object 
     Regex check = new Regex(pattern); 
     //boolean variable to hold the status 
     bool valid = false; 
     //check to make sure an ip address was provided 
     if (addr == "") 
     { 
      //no address provided so return false 
      valid = false; 
     } 
     else 
     { 
      //address provided so use the IsMatch Method 
      //of the Regular Expression object 
      valid = check.IsMatch(addr, 0); 
     } 
     //return the results 
     return valid; 
    } 
1

你可以使用一個ASP.NET Regular Expression Validator

<asp:RegularExpressionValidator ID="regexpName" runat="server"  
           ErrorMessage="This expression does not validate." 
           ControlToValidate="yourTextBox"  
           ValidationExpression="RegEx here" /> 

然後設置ValidationExpression於:(只允許IP地址)

\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\ 
+0

我想在Windows應用程序不爲web .. – Amulraj

+0

@Amulraj你可以使用yourTextBox_Validating事件來捕獲這個,然後使用我提供的正則表達式。 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.validating.aspx –

1

這裏。 如果你最終得到4個字節(如0-255範圍內的數字),那麼將文本按點分割,這是一個有效的IP。

bool IsTextAValidIPAddress(string text) 
{ 
    bool result = true; 
    string[] values = text.Split(new[] { "." }, StringSplitOptions.None); //keep empty strings when splitting 
    result &= values.Length == 4; // aka string has to be like "xx.xx.xx.xx" 
    if(result) 
     for (int i = 0; i < 4; i++) 
      result &= byte.TryParse(values[i], out temp); //each "xx" must be a byte (0-255) 
    return result; 
} 

或者,如果你能/想利用System.Net

bool IsTextAValidIPAddress(string text) 
{ 
    System.Net.IPAddress test; 
    return System.Net.IPAddress.TryParse(text,out test); 
} 
相關問題