电子邮件:为Preg_Match_All

时间:2015-05-22 13:25:32

标签: php regex email

我有以下正则表达式来抓取任何IP:PORT:

preg_match_all('/(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}:(\d){1,5}/ism',$page,$proxies);

从指定页面获取所有IP:PORTS的内容。 我需要一种方法来获取电子邮件:从指定页面传递。 我不希望那里的电子邮件验证器到处都是,我希望它的格式有点像我的IP:PORT的正则表达式。

所以它不应该抓住:

Email.co.uk:P@ass
Email:Pass
etc.

它应该抓住:

Email@Email.co.uk:Pass123
etc.

有任何帮助吗? THX!

编辑:它也应该寻找.coms和.co.uk等

1 个答案:

答案 0 :(得分:0)

既然我的建议已经解决了,请让我把它作为答案发布。

您可以使用的正则表达式是

preg_match_all('/^[a-z0-9_.+-]+@[a-z0-9-]+\.[a-z0-9-.]+:[a-z0-9-.]+/im',$page,$‌​accounts);

请参阅demo

请注意,您不需要s标记,因为您的模式中没有.(匹配任何字符)符号。

正则表达式匹配

  • ^ - 字符串的开头
  • [a-z0-9_.+-]+ - 字符类
  • 中的1个或多个字符
  • @ - @符号
  • [a-z0-9-]+ - 字符类
  • 中的1个或多个字符
  • \. - 字面点
  • [a-z0-9-.]+ - 字符类
  • 中的1个或多个字符
  • : - 一个字面冒号
  • [a-z0-9-.]+ - 字符类
  • 中的1个或多个字符

/im表示“忽略大小写”(i)(因此我们不必在正则表达式中使用[A-Z][a-z]就足够了)和“多行” (m)(以便^$匹配行开头/结尾)。

PS:很抱歉删除我的评论。我使用#作为分隔符,它是PHP中完全有效的正则表达式分隔符。