Como pegar IP: PORT com regex?

Ok, então estou criando um pequeno IP: raspador PORT em PHP. O problema é que eu não conheço muito o RegEx.

Então eu tenho juntado o que posso.

Aqui está o que eu tenho: /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):([0-9]{1,5})\b/

Eu sei que isso não é o melhor. Pelo menos não o fim para pegar a porta, porque isso significa que as portas poderão ser coisas como 99999.

Além disso, parece retornar duas correspondências desta forma. O IP: PORT e PORT. Eu só preciso dele para pegar o IP completo: PORT, nem um nem outro.

Alguém pode ajudar?

Sua regex está bem, então eu vou apenas me concentrar na própria porta. Esta regex:

 (?:: #Match the : (?![7-9]\d\d\d\d) #Ignrore anything above 7.... (?!6[6-9]\d\d\d) #Ignore anything abovr 69... (?!65[6-9]\d\d) #etc... (?!655[4-9]\d) (?!6553[6-9]) (?!0+) #ignore complete 0(s) (?\d{1,5}) )? 

Venderá, opcionalmente, qualquer número de porta válido e armazená-lo na porta de grupo com nome.

Nota: o espaçamento livre deve estar habilitado:

 if (preg_match( '/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) (?:: (?![7-9]\d\d\d\d) #Ignrore anything above 7.... (?!6[6-9]\d\d\d) #Ignore anything abovr 69... (?!65[6-9]\d\d) #etc... (?!655[4-9]\d) (?!6553[6-9]) (?!0+) #ignore complete 0(s) (?P\d{1,5}) )? \b/x', $subject)) { # Successful match } 

Posicionei uma expressão regular abaixo do que corresponde a ip ou ip e a porta.

 $ip = '111.222.333.444'; if ( preg_match('/([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\:?([0-9]{1,5})?/', $ip, $match) ) { echo 'ip: ' . $match['1'] . (isset($match['2']) ? ' port: ' . $match['2'] : ''); } 

Você poderia tentar isso:

 \b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):\d{1,5}\b 

Existem alguns exemplos de correspondência de IP aqui . Basta pegar qualquer um deles e colocar :\d{1,5}\b no final (para combinar uma porta).

Eu usei isso há muito tempo atrás.

 [0-9]{3}.[0-9]{3}.[0-9]{3}.[0-9]{3}:[0-9]{5}