用于从电子邮件标头获取 IP 地址的正则表达式 [重复]

Posted

技术标签:

【中文标题】用于从电子邮件标头获取 IP 地址的正则表达式 [重复]【英文标题】:Regex for getting IP address from email header [duplicate] 【发布时间】:2012-12-26 02:48:48 【问题描述】:

可能重复:Regular expression to match DNS hostname or IP Address?

我需要正则表达式来从电子邮件标题中获取 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("/\d1,3\.\d1,3\.\d1,3\.\d1,3/", $this->email, $matches); 

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

【问题讨论】:

【参考方案1】:

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

/^Received: .*?(\d1,3(?:\.\d1,3)3))/

IPv4 和 IPv6 的正则表达式:

/^Received: .*?((?:\d1,3(?:\.\d1,3)3)|([a-z0-9]4(?::[a-z0-9]4)7))/

【讨论】:

谢谢,如果ip地址是IPV6 像这样,2001:0db8:85a3:0042:1000:8a2e:0370:7334 我得到了这个错误 preg_match_all(): Compilation failed: unmatched parentheses at offset 但是没有返回IP地址,print_r($matches) OUTPUT:array(3) [0]=> array(0) [1]=> array(0) [2]=> array(0)

以上是关于用于从电子邮件标头获取 IP 地址的正则表达式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式从日志文件的最后一行获取 IP 地址

用于从封闭字符串中提取 IP 地址和端口的简单 Java 正则表达式

从 databricks 表的字符串列中收集用户信息(电子邮件、IP 地址等)

splunk:从ip地址获取前三个数字

正则表达式,电子邮件验证从文本框中获取用户输入

python实战系列之正则获取IP地址