2011-07-17 2 views
3

Есть ли способ проверить действительную комбинацию host:port с использованием регулярных выражений и php?Проверить действительный хост: комбинация портов

Регулярное выражение должен убедиться, что:

  • host является допустимым IP (содержащий четыре 1-3 значных чисел, разделенных точками 3, число в диапазоне 1-255)
  • Eсть разделитель :
  • port является допустимым числом в диапазоне от 0 до 65535
  • больше ничего разрешен

Примеры допустимых комбинаций:

  1. 95.241.1.5:5423

  2. 2.8.5.2:65532

Примеры недействительных комбинаций:

  1. 1. .12.1: 5441

  2. 15.852.32.455:

  3. 65.112.15.32: 48trololo

+3

Почему вы хотите использовать регулярное выражение? –

+0

Да, регулярное выражение служит только для самых основополагающих проверок .... Кстати, вы забыли проверить, что каждая из групп цифр в IP должна быть <256. Удачи проверять, что с регулярным выражением! – SJuan76

+0

FILTER_VALIDATE_IP –

ответ

6
^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]):(?:6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$ 

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

В расширенном формате, немного более читаемым:

^ 
(?: 
(?: 
    25[0-5]|  # 250-255 
    2[0-4][0-9]| # 200-249 
    1[0-9][0-9]| # 100-199 
    [1-9]?[0-9]  # 0-99 
) 
\.    # . 
){3}    # three times, last segment follows (no dot) 
(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]) 
:     # : 
(?: 
6553[0-5]|  # 65530-65535 
655[0-2][0-9]| # 65500-65529 
65[0-4][0-9]{2}| # 65000-65499 
6[0-4][0-9]{3}| # 60000-64999 
[1-5][0-9]{4}| # 10000-59999 
[1-9][0-9]{1,3}| # 10-9999 
[0-9]   # 0-9 
) 
$ 
+1

..и теперь у вас есть две проблемы. – Umopepisdn

Смежные вопросы