如何評估IP?
回答
但問題並不像假設a.b.c.d
... there are way more forms than you realised一樣簡單。
但是這肯定是Google的一個問題嗎?很多每正則表達式引物,你可以找到任何地方使用IP爲例! ipv4 + regex得分183,000!
對於IPv4,您可以使用此正則表達式。
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
它看起來相當複雜,但它的工作原理是將每個四元組限制爲數字0-255。
由於該正則表達式的一半處理的事實,最後一段沒有一個週期結束時,你可以把它切成兩半,如果你釘一個「」到您可能的IP地址的末尾。
事情是這樣的:
bool IsValidIPAddress(string possibleIP){
CrazyRegex = \b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){4}\b
return Regex.Match(possibleIP+'.', CrazyRegex)
}
@unsliced:真的,這個問題可能會變得有些瘋狂。
如果你確實需要處理任何可能的IP地址,那麼你必須把更復雜的東西放在一起。
不過,如果你只想做基本的驗證,以確保用戶輸入正確格式化數據,我認爲這是公平地限制他們與上述正則表達式A.B.C.D模型。
@unsliced這是正確的,但它當然取決於實現,如果你解析來自訪問你的網站的用戶的IP,那麼你可以使用正則表達式,因爲它應該是x.x.x.x格式。
對於IPv6,你可以使用這個
[A-F0-9]{0,4}:[A-F0-9]{0,4}:[A-F0-9]{0,4}:[A-F0-9]{0,4}:[A-F0-9]{0,4}:[A-F0-9]{0,4}:[A-F0-9]{0,4}:[A-F0-9]{0,4}
但是它並沒有趕上一切,因爲使用IPv6則顯得更爲複雜,acording維基百科的所有下面的例子是technicaly正確但上述正則表達式將只抓的那些帶*
2001:0db8:0000:0000:0000:0000:1428:57ab*
2001:0db8:0000:0000:0000::1428:57ab*
2001:0db8:0:0:0:0:1428:57ab*
2001:0db8:0:0::1428:57ab
2001:0db8::1428:57ab
2001:db8::1428:57ab
在.NET中有它有一個方便的方法TryParse的ip地址類型。
例子:
if(System.Net.IPAddress.TryParse(PossibleIPAddress, validatedIPAddress)){
//validatedIPAddress is good
}
// or more simply:
bool IsValidIPAddress(string possibleIP){
return System.Net.IPAddress.TryParse(PossibleIPAddress, null)
}
我這樣做過,但我喜歡Raymond Chen的帖子在:
http://blogs.msdn.com/oldnewthing/archive/2006/05/22/603788.aspx
在那裏,他基本上認爲應該用正則表達式爲他們所擅長的:解析出令牌。然後評估結果。他的例子:
function isDottedIPv4(s)
{
var match = s.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);
return match != null &&
match[1] <= 255 && match[2] <= 255 &&
match[3] <= 255 && match[4] <= 255;
}
看起來更容易,並且饒有興趣地去理解它應該做什麼。
我測試了它在各種輸入。似乎防彈。 – 2014-04-25 09:31:39
的IPv4變爲:/\d\d?\d?.\d\d?\d?.\d\d?\d?.\d\d?\d?/
我不知道有關IPv6的規則。
- 1. 如何編寫PHP代碼來評估客戶端IP?
- 2. Typescript ESDoc如何評估評論範圍?
- 3. 如何評估主機名?
- 4. 如何評估CUDA性能?
- 5. 如何評估表達式?
- 6. 如何評估變量
- 7. 在r中,如何評估
- 8. 你如何評估網站?
- 9. 如何評估測試?
- 10. 如何評估tclsh腳本?
- 11. XPath評估如何實施?
- 12. 如何忽略%%的評估?
- 13. 如何評估羣集?
- 14. 如何避免評估GString
- 15. 如何評估病情?
- 16. TopCoder如何評估代碼?
- 17. 如何評估struts 2 s:if?
- 18. javascript如何評估參數?
- 19. 如何評估變量?
- 20. 你如何評估/評估消息架構?
- 21. 評估設計時,您如何評估複雜性?
- 22. 如何在編寫Gradle插件時評估後評估
- 23. 模型OCL評估與對象評估
- 24. Tensorflow評估:評估所有圖像
- 25. 開關評估
- 26. 評估功能
- 27. IQueryable評估
- 28. Python socket.recv評估
- 29. TestComplete評估
- 30. 腳本評估
但是由於您提供的鏈接是一篇很棒的文章,我選擇這個作爲正確的答案。 ;) – pek 2009-09-02 20:48:33