Regex用于从电子邮件标头获取IP地址


Regex for getting IP address from email header

可能重复:
正则表达式是否匹配DNS主机名或IP地址?

我需要正则表达式从电子邮件头中获取IP地址。收到的章节下面有很多标题。

但我只想从有这样图案的行中阅读ipad。

Received: from unknown 124.253.91.178 by rediffmail.com via HTTP; 11 Jan 2013 10:10:35 -0000

我尝试了下面的regex,但它返回了电子邮件标题文本的所有ip地址。

 preg_match_all("/'d{1,3}'.'d{1,3}'.'d{1,3}'.'d{1,3}/", $this->email, $matches); 

我想在一行中匹配Received:from字和ip地址。Ip地址可以是IPv6或IPv4

您可以尝试使用以下正则表达式:

/^Received: .*?('d{1,3}(?:'.'d{1,3}){3}))/

IPv4和IPv6的Regex:

/^Received: .*?((?:'d{1,3}(?:'.'d{1,3}){3})|([a-z0-9]{4}(?::[a-z0-9]{4}){7}))/