Здравствуйте. Есть проблема, нужно создать регулярное выражения для распаршивания данных вида:
ip:port@login:password
Пример:
127.0.0.1:21@admin:82jrjxm
Пока не могу найти точное решение для данной проблемы. Получается, всё же нужно будет 4 типа регулярных выражения:
Верно? Для IP пока есть идея шаблона, но по остальном даже не знаю.
P.S. В поисковых системах не нашел информации по подобному формату.
Неясно, конечно, какие части в вашей строке могут присутствовать, а какие нет. Но я бы копал не в сторону регулярок, а в сторону более простого варианта:
$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.
Примеры
$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);
Все будет зависить от того что вам нужно в итоге.
^(\d+\.\d+\.\d+\.\d+):(\d+)@([^:]+):(.+)$
var s = "127.0.0.1:21@admin:82jrjxm"
console.log(s.match(/^(\d+\.\d+\.\d+\.\d+):(\d+)@([^:]+):(.+)$/))
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники