【问题标题】:Create a regular expression with preg_match使用 preg_match 创建正则表达式
【发布时间】:2010-11-15 04:49:58
【问题描述】:

我想为下面的字符串创建一个正则表达式。 动态部分(即需要用粗体表示的表达式)


邮件系统

**email address**: host mx2.hotmail.com[65.55.92.152] said:
550 Requested action not taken:
**mailbox unavailable** (in reply to RCPTTO command)

基本上我希望我的正则表达式搜索电子邮件和“邮箱不可用”。

所以它会先搜索邮件,然后搜索字符串“邮箱不可用”。

我该怎么做?我需要为此使用 preg_match php 函数。


编辑:

实际上我正在编写代码来查找退回的邮件。我正在放置完整电子邮件的源代码以匹配。我的一封电子邮件给出了上述错误。所以我需要检查电子邮件代码中是否包含该错误。如果找到该代码,那么它将相应地返回错误。因此,在该错误消息中,动态部分是电子邮件地址、方括号中的 ip 和字符串邮箱不可用。

【问题讨论】:

  • 这个问题缺乏明确性和方向性。字符串的哪些部分是“静态的”(不改变),哪些部分是“动态的”(每次都改变)?
  • 我需要正则表达式,它找到用 包围的电子邮件,然后找到字符串“邮箱不可用”。希望现在清楚。
  • 不确定您要做什么,但它是“preg_match”而不是“prag_match”
  • 不清楚。你让它更混乱了。您提供的字符串中没有任何内容包含 <> !编辑您的问题。不要添加到 cmets。
  • 您想要 preg_match 的正则表达式字符串来测试是否在邮箱不可用的情况下返回电子邮件?听起来可行,但我猜有一个更好的特定于电子邮件的功能(我不知道这样的功能,但似乎有可能)

标签: php regex preg-match


【解决方案1】:

仅电子邮件地址的正则表达式就应该让您了解您要实现的目标的复杂性:

http://fightingforalostcause.net/misc/2006/compare-email-regex.php

【讨论】:

    【解决方案2】:

    你可以使用这些表达方式:

    preg_match("/[<]\S+@\S+[>]/i",$your_string); // this matches: <info@example.com>
    
    preg_match("/mailbox unavailable/i",$your_string) // this matches: mailbox unavailable
    

    最后一个斜杠后的 i 代表不区分大小写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      相关资源
      最近更新 更多