提前为另一个电子邮件模式匹配查询道歉。 这是我到目前为止所拥有的:
$text = strtolower($intext);
$lines = preg_split("/[\s]*[\n][\s]*/", $text);
$pattern = '/[A-Za-z0-9_-]+@[A-Za-z0-9_-]+\.([A-Za-z0-9_-][A-Za-z0-9_]+)/';
$pattern1= '/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/';
foreach ($lines as $email) {
preg_match($pattern,$email,$goodies);
$goodies[0]=filter_var($goodies[0], FILTER_SANITIZE_EMAIL);
if(filter_var($goodies[0], FILTER_VALIDATE_EMAIL)){
array_push($good,$goodies[0]);
}
}
$Pattern 工作正常,但 .rr.com 地址(我确信还有更多问题)被剥夺了 .com
$pattern1 仅抓取单独一行的电子邮件。
我正在将一整页的杂项文本粘贴到文本区域中,其中包含我试图恢复的旧数据文件中的一些电子邮件。
除了带有多个“.”的电子邮件之外,一切都运行良好。在“@”之前或之后。
我确信肯定还有更多问题。
我尝试了几种我发现的模式以及一些我尝试编写的模式。
在我拔掉剩余的头发之前,有人可以给我看看这里的光吗?
这个怎么样?
/((?:\w+[.]*)*(?:\+[^@ \t]*)?@(?:\w+[.])+\w+)/
说明:
(?:\w+[.])*
识别 0 个或多个单词字符串(字母数字 + _)实例,可选地用句点字符串分隔。 接下来,(?:\+[^@ \t]*)?
识别一个加号,后跟零个或多个非空白、非 at 符号字符。 然后是 @ 符号,最后是 (?:\w+[.])+\w+
,它匹配由句点分隔并以单词字符串结尾的单词字符串序列。 (即,[子域.]域.顶级域)