0

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

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

但我只想从具有这样模式的行中读取 ipaddress。

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

我尝试了下面的正则表达式,但它返回了电子邮件标题文本的所有 IP 地址。

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

我想 在一行中匹配单词和ip地址Received:fromIP 地址可以是 IPv6 或 IPv4

4

1 回答 1

1

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

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

IPv4 和 IPv6 的正则表达式:

/^Received: .*?((?:\d{1,3}(?:\.\d{1,3}){3})|([a-z0-9]{4}(?::[a-z0-9]{4}){7}))/
于 2013-01-11T13:53:44.643 回答