2014-09-22 71 views
1

我已經通過各種網站進行搜索,並且在這裏找到一個可以工作但沒有做的工作。正則表達式檢查有效的主機名端口

我需要一個正則表達式來驗證遊戲服務器主機名是正確的格式。

實施例:

gost.gflclan.com:27015 

而且也正常的IP:端口

103.18.138.27:27015 

主機名版本也可以在子域或主部件號。兩個端口上始終有5個數字。

我目前得到這個,但它只適用於IP:端口,而不是主機名。

([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}:[0-9]{5})|([a-z].[a-z].[a-z]:[1-9]{5}) 

如果你可以幫忙,謝謝。

+0

正則表達式是不是爲了做這些2完全獨立的字符串匹配的1.你正在使用什麼樣的編碼語言?您需要一個檢測機制來檢查是否通過了域名或基於IP的驗證。 – 2014-09-22 03:57:33

+0

[需要正則表達式來驗證與TcpClient.Connect()一起使用的主機名和端口)(http://stackoverflow.com/questions/19553003/need-a-regular-expression-to-validate- a-hostname-and-port-to-be-used-with-tcpcli) – jww 2014-09-22 04:38:21

+0

沒有太多意義。即使它在語法上有效,它仍然可能是錯誤的。只要嘗試連接並讓異常告訴你它有什麼問題,如果有的話。 – EJP 2015-03-05 09:06:57

回答

0

Live demo

你忘了+[a-z]後點必須轉義:

([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\:[0-9]{5})|([a-z]+\.[a-z]+\.[a-z]+\:[0-9]{5}) 
2

更新:

嘗試:

[^\:]+:[0-9]{5} 

動態匹配兩種:

103.18.138.27:27015 
gost.gflclan.com:27015 

一點的解釋:

[^\:]+ --- |> all chars till ':' 
    : 
[0-9]{5} --|> exactly 5 numbers 
+1

難道你不應該匹配任何數量的字符?例如,端口80或端口443都是有效的 – casraf 2015-03-05 08:56:48

1

有更多的更乾淨的代碼:

(([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})|(\w*.\w*.\w*)):[0-9]{5}