2014-09-22 93 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}