Rob*_*Rob 10 php regex ip port
我在PHP中创建了一个小型IP:PORT scraper.问题是我对RegEx很不熟悉.
所以我一直在拼凑我能做的事情.
这是我得到的:
/\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/
我知道这不是最好的.至少不是最终抓住端口,因为这意味着端口将能够像99999这样的东西.
此外,它似乎以这种方式返回两个匹配.IP:PORT和PORT.我只需要它来获取完整的IP:PORT,而不是其中一个.
你的正则表达式很好,所以我只关注端口本身。这个正则表达式:
(?:: #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)
(?<Port>\d{1,5})
)?
Run Code Online (Sandbox Code Playgroud)
将选择性地捕获任何有效的端口号并将其存储到命名组端口。
注意:必须启用自由间距:
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<Port>\d{1,5})
)?
\b/x',
$subject)) {
# Successful match
}
Run Code Online (Sandbox Code Playgroud)
我发布了一个正则表达式,其下方与ip或ip和port匹配.
$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'] : '');
}
Run Code Online (Sandbox Code Playgroud)
你可以试试这个:
\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
Run Code Online (Sandbox Code Playgroud)
这里有一些IP匹配的例子。只需取出其中任何一个并放在:\d{1,5}\b末端(以匹配端口)。
| 归档时间: |
|
| 查看次数: |
14837 次 |
| 最近记录: |