【问题标题】:Email:Pass regex for Preg_Match_All电子邮件:为 Preg_Match_All 传递正则表达式
【发布时间】:2015-08-04 13:10:00
【问题描述】:

我有以下正则表达式,它可以抓取任何 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 的内容。 我需要一种从指定页面获取 Email:Pass 的方法。 我不希望这里到处都是那些电子邮件验证器,我希望它的格式有点像我的 IP:PORT 的正则表达式。

所以它不应该抓住:

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

它应该抓住:

Email@Email.co.uk:Pass123
etc.

有什么帮助吗?谢谢!

编辑:它还应该查找 .coms 和 .co.uk 等

【问题讨论】:

  • 我会尝试,我在 preg_match_replace 中需要它,但我知道你要去哪里,但 # .. +#msi 到底是什么?
  • Dat 无论如何都不会工作,因为它搜索字面上的电子邮件我将要进行正则表达式的内容不会完全是 Email@whatever 等等,它就像 awesome@gmail.com e.t.c
  • 再次与 Pass 位相同:P 并且您可以将其格式化为 preg 匹配所有 plz 与奇怪的 #etc
  • 哦,真的谢谢老兄!编辑了一点你的正则表达式并得到了这个 preg_match_all('/^[a-z0-9_.+-]+@[a-z0-9-]+\.[a-z0-9-.]+:[ a-z0-9-.]+/ism',$page,$accounts);完美!
  • 我现在需要做的就是尝试让我的 file_put 内容停止删除上次使用时匹配的内容。 :/ 一点都不难,谢谢老兄!

标签: php regex email


【解决方案1】:

既然我的建议对你有用,让我把它作为答案发布。

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

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:很抱歉删除了我的 cmets。我使用 # 作为分隔符,它是 PHP 中完全有效的正则表达式分隔符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 2011-12-28
    • 2012-01-02
    • 2015-12-03
    • 1970-01-01
    相关资源
    最近更新 更多