2011-07-14 151 views
5

我做了使用IP地址的應用程序。我要驗證他們從至少1.0.0.1但與代碼開始低於其接受0.0.0.0:如何在C#中驗證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]?)\b 

我也試着將其更改爲:

\b(25[0-5]|2[0-4][0-9]|[01]?[1-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]?)\b 

這個代碼不接受0.0.0.0,但不接受100.0.0.0到109.0.0.0。

有人可以幫忙嗎?

+0

請學習如何正確格式化您的問題。 –

+0

-1沒有解釋你正在使用正則表達式(如果是這樣)。什麼是「bt」?爲什麼格式很差?閱讀此:http://stackoverflow.com/editing-help – spender

+0

使用正則表達式來進行這種驗證似乎是不必要的腦部收稅。爲什麼不用'.'分割並以更傳統的方式驗證IP地址的每個部分? – spender

回答

1

保存自己的痛苦!轉換爲一個字符串,分割點字符,並檢查每個4段是否在0或1到255範圍內。

否則,如果您使用RegexBuddy(這是一個夢幻般的RegEx應用程序),它有一堆在圖書館INC IP地址爲例子0.0.0.0到255.255.255.255:

\b(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b 
10

使用

IPAddress addr = IPAddress.TryParse(str); 

然後,如果工作利用得到的數字

addr.GetAddressBytes(); 

,然後使用正常的,如果-案件檢查字節值正確的條件。

+2

再見它也驗證1爲真,並設置ip地址到0.0.0.1 –

+0

是一路「1」是一個有效的IP地址,這意味着0.0.0.1 –

+2

邑網絡專家可能是可以理解的,但在文本框中輸入驗證上不需要非專業用戶的應用程序。 –

0

嘗試使用此,

ValidIpAddressRegex = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";