我有以下正则表达式来抓取任何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等
答案 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_.+-]+
- 字符类@
- @符号[a-z0-9-]+
- 字符类\.
- 字面点[a-z0-9-.]+
- 字符类:
- 一个字面冒号[a-z0-9-.]+
- 字符类 /im
表示“忽略大小写”(i
)(因此我们不必在正则表达式中使用[A-Z]
,[a-z]
就足够了)和“多行” (m
)(以便^
和$
匹配行开头/结尾)。
PS:很抱歉删除我的评论。我使用#
作为分隔符,它是PHP中完全有效的正则表达式分隔符。