regex PHP正则表达式查找“email”:“email@domain.com“模式

qpgpyjmq  于 2023-05-13  发布在  PHP
关注(0)|答案(1)|浏览(100)

我有一个函数,可以找到一个特定格式的电子邮件字符串。我需要在较大的字符串中找到此特定的电子邮件字符串。我需要查找的特定电子邮件字符串必须采用以下格式:
“电子邮件”:“email@domain.com“
我需要找到任何出现这种类型的字符串。下面是我的函数来找到:

function find_email_schema($str){

      preg_match_all('/["email":"]+[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i', $str, $matches);

      return $matches;

  }

但是,此函数并没有按预期工作,它会找到其他不采用此格式的较大字符串的电子邮件:
“电子邮件”:“email@domain.com“
我只想要以“email”开头的电子邮件:
我知道我传递给preg_match_all的模式是不正确的,但我不确定我需要改变什么才能只获得符合上述格式的电子邮件。我需要在我的正则表达式模式中修改什么才能让它工作?
这是我使用的模式:

/["email":"]+[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i
vuv7lop3

vuv7lop31#

因为"email":部分是文字,所以不需要将其包含在[]之间,所以尝试这个(我还添加了包含"可选的?的电子邮件地址):

/"email":"?[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+"?/i

[]用于声明字符范围,如a-z,表示从az,就像您在下一部分中所做的那样。
让我们在regex101.com上尝试一下:

相关问题