可能重复:
正则表达式是否匹配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}))/