2014-09-22 3 views
1

Я искал различные веб-сайты и здесь для одного, который работает, но никто этого не делает.регулярное выражение проверка действительного имени хоста

Мне нужно регулярное выражение, которое проверяет имя хоста игрового сервера в правильном формате.

Пример:

gost.gflclan.com:27015 

А также нормальный IP: порт

103.18.138.27:27015 

версия имя хоста может также иметь номера в подобласти или основной части. И всегда имеет 5 номеров в порту на обоих.

У меня есть это, но он работает только для ip: port, а не для имени хоста.

([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

RegEx не предназначен, чтобы сделать эти 2 совершенно отдельное согласование строки в 1. Какой язык кодирования вы используете? Вам нужен механизм обнаружения, чтобы проверить, прошла ли проверка имени домена или ip-based. – 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

+0

Не так много смысла в этом. Даже если он синтаксически действителен, он все равно может быть ошибочным. Просто попробуйте подключиться и пусть исключение (ы) скажет вам, что с ним не так, если угодно. – EJP

ответ

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

1

Существует немного более чистый код:

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