2013-03-29 48 views
1

在閱讀了有關端口和建議的端口之後,我發現爲了遵守互聯網號碼分配當局(IANA)對私有端口的建議,您應該只使用端口49152至65535.因此,我嘗試了正則表達式模式來檢查用戶是否輸入了該範圍內的端口。我把這件事拼湊在一起,頭痛不已,我不得不閱讀大量的教程才能得到這麼遠的正則表達式模式真的不是人類友好的。基本上我在尋找比我更多知識的人來驗證它是正確的。我的測試似乎表明它,但也許我錯過了一些我只想確定的東西。C#正則表達式端口驗證49152至65535

string pattern = @"^(6553[0-5]|655[0-2]\d|65[0-4]\d\d|6[0-4]\d{3}|5\d{4}|49[2-9]\d\d|491[6-9]\d|4915[2-9])$"; 

問候!

+10

真的嗎?正則表達式檢查整數範圍? – mensi

+3

我認爲這是一個典型的情況,你不應該使用正則表達式 –

+0

我同意mensi;你爲什麼不能用< and >來測試? – Melanie

回答

6

爲什麼使用正則表達式?

string input = "51204"; 
int portNumber; 
if (int.TryParse(input, out portNumber) 
    && portNumber >= 49152 
    && portNumber <= 65535) 
{ 
    // Valid value... 
} 
+0

我可以看到這個邏輯。我從來沒有想過這麼做,謝謝 –

0
 int port; 
     bool InRange = Int32.TryParse(StrPort, out port) && port >= 49152 && port <= 65535; 
0

使用int.TryParse(),然後驗證所得到的整數範圍來代替。

0

這可能不是回答你的問題,但你可以使用:

int port = Convert.ToInt32(input); 
if (port >= 49152 && port <= 65535) { 
    //port is valid 
}