我需要一个从字符串中返回非电子邮件的正则表达式

时间:2011-06-07 08:33:54

标签: php regex

经过大量搜索后,我发现这个正则表达式在字符串中找到了电子邮件:

preg_match_all("/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i", $text, $output);

我怎样才能获得完全相反的效果?我真的需要知道哪些词不是有效的电子邮件地址: - )

2 个答案:

答案 0 :(得分:2)

  

我怎样才能获得完全相反的效果?我真的需要知道哪些词不是有效的电子邮件地址: - )

如果提到的正则表达式对您来说足够有效,请使用preg_replace过滤掉匹配项,剩下的文本将是不匹配的所有内容:

<?php
$text = 'Your text here.';

// replace everything that matches with ''.
$text = preg_replace( "/^[^a-z0-9]+([^_\.-][^a-z0-9]+)^@([^a-z0-9]+([^.-][^a-z0-9]+))+\.[a-z]{2,}/i", '', $text );

echo $text;

答案 1 :(得分:1)

如果您使用preg_replace($pattern, "", $string),那么您将获得一个字符串,该字符串已删除了与给定模式匹配的所有内容。然后,您可以对此字符串进行标记(即在其上调用split)以获取与该模式不匹配的单词列表。