我有一个函数,可以找到一个特定格式的电子邮件字符串。我需要在较大的字符串中找到此特定的电子邮件字符串。我需要查找的特定电子邮件字符串必须采用以下格式:
“电子邮件”:“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
1条答案
按热度按时间vuv7lop31#
因为
"email":
部分是文字,所以不需要将其包含在[
]
之间,所以尝试这个(我还添加了包含"
可选的?
的电子邮件地址):[
]
用于声明字符范围,如a-z
,表示从a
到z
,就像您在下一部分中所做的那样。让我们在regex101.com上尝试一下: