Регулярное выражение для формата ip:port@login:password

308
11 сентября 2017, 05:52

Здравствуйте. Есть проблема, нужно создать регулярное выражения для распаршивания данных вида:

ip:port@login:password

Пример:

127.0.0.1:21@admin:82jrjxm

Пока не могу найти точное решение для данной проблемы. Получается, всё же нужно будет 4 типа регулярных выражения:

  • Для поиска IP
  • Для поиска порта
  • Для поиска логина
  • Для поиска пароля

Верно? Для IP пока есть идея шаблона, но по остальном даже не знаю.

P.S. В поисковых системах не нашел информации по подобному формату.

Answer 1

Неясно, конечно, какие части в вашей строке могут присутствовать, а какие нет. Но я бы копал не в сторону регулярок, а в сторону более простого варианта:

$example = '127.0.0.1:21@admin:82jrjxm';
list($connectInfo, $userInfo) = explode('@', $example);
$asUrl = "http://$userInfo@$connectInfo";
$parts = parse_url($asUrl);
var_dump($parts);

Результат:

array (size=5)
  'scheme' => string 'http' (length=4)
  'host' => string '127.0.0.1' (length=9)
  'port' => int 21
  'user' => string 'admin' (length=5)
  'pass' => string '82jrjxm' (length=7)

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

Answer 2

Примеры

$text = '127.0.0.1:21@admin:82jrjxm';
$matches = preg_split('/[\:\@]/u', $text);
var_dump($matches);
preg_match('/^(.*):(.*)\@(.*?):(.*)$/', $text, $matches);
var_dump($matches);

preg_match('/^((?:\d{1,3}\.?)+)\:(\d{1,4})\@(\w+)\:([\d\w]+)$/', $text, $matches);
var_dump($matches);

Все будет зависить от того что вам нужно в итоге.

Answer 3
^(\d+\.\d+\.\d+\.\d+):(\d+)@([^:]+):(.+)$

var s = "127.0.0.1:21@admin:82jrjxm" 
console.log(s.match(/^(\d+\.\d+\.\d+\.\d+):(\d+)@([^:]+):(.+)$/))

READ ALSO
Laravel 5.4: SQLSTATE[42000] 1071 Specified key was too long error

Laravel 5.4: SQLSTATE[42000] 1071 Specified key was too long error

Поставил на хост чистый laravel 54 через composer, сразу запустил миграции и получил ошибку:

388
Безопасность оплаты кнопкой PayPal

Безопасность оплаты кнопкой PayPal

Я настраиваю PayPal оплату услуг на сайтеВсе должно пройти автоматически до момента когда в админке засветится зеленая лампочка и скажет что...

269
Хранение различных постов

Хранение различных постов

На сайте есть 3 раздела, в первом располагаются посты, во 2 располагается галерея с описанием и названием для каждой записи, в 3-м разные новостиВопрос...

206
Как прочитать строку из консоли

Как прочитать строку из консоли

Есть алгоритм для переворота строкиОн переводит только ту строку,которую я укажу в char string[] = "Hello, world"; Но как сделать так,чтобы он переводил...

321