2011-07-14 14 views
5

IP adresi kullanan bir uygulama yapıyorum. Ben kabul aşağıda en az 1.0.0.1 den ama kodları ile başlamalarını doğrulamak zorunda 0.0.0.0:IP adresi nasıl doğrulanır? C#

\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 

Ben de değiştirmeyi denedi:

\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 

Bu kod kabul etmiyor 0.0.0.0 ancak 100.0.0.0 ila 109.0.0.0 kabul etmez.

Birisi yardımcı olabilir mi?

+0

düzgün soruları biçimlendirmek öğrenmek ediniz. Regex kullandığınızı açıklamamak için –

+0

-1 (eğer buysa). "Bt" nedir? Biçimlendirme neden bu kadar fakir? Bunu okuyun: http://stackoverflow.com/editing-help – spender

+0

Bu tür bir doğrulama için Regex'i kullanmak gereksiz yere beyin vergisi gibi görünüyor. Neden '.' ile ayrılmayın ve IP adresinin her bir bölümünü daha geleneksel bir şekilde doğrulayın? – spender

cevap

1

Kendinizi acıdan koruyun! Bir karakter dizisine dönüştürün, nokta karakterine bölün ve 4 segmentin her birinin 0 veya 1 ila 255 aralığında olup olmadığını kontrol edin.

Eğer RegexBuddy (RegEx için harika bir uygulama) kullanırsanız, aksi halde bir grup vardır. 255.255.255.255 0.0.0.0'dan için Kütüphane inc IP adresi örneklerinden:

IPAddress addr = IPAddress.TryParse(str); 

Sonra o kullanarak rakamları elde yaradıysa

\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

Kullanım

addr.GetAddressBytes(); 

ve daha sonra normal durumları kullanarak doğru koşullar için bayt değerlerini kontrol edin. Bu kullanarak

+2

bye ayrıca 1 değerini true olarak doğrular ve ipaddress değerini 0.0.0.1 olarak ayarlar. –

+0

Evet "1" geçerli bir IP adresidir, yani 0.0.0.1 –

+2

Ağ uzmanı için bu anlaşılabilir olabilir, ancak giriş metni kutusundaki doğrulama Profesyonel olmayan kullanıcı için bir uygulama istenmez. –

0

deneyin,

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])$";