2011-06-07 83 views
2

返回非电子邮件大量搜索,我发现这是正则表达式查找字符串中的电子邮件后,一个正则表达式:我需要从一个字符串

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

我怎样才能有确切oposite影响?我真的需要知道什么是不是有效的电子邮件地址的单词:-)

+0

关于电子邮件验证的好贴子http://www.regular-expressions.info/email.html非有效字的数量是无限的! – 2011-06-07 08:36:33

+0

@Fredrik,但不是有限的单词? – Yeroon 2011-06-07 08:38:24

回答

2

我怎样才能得到确切的oposite效果?我真的需要知道什么是如果提到正则表达式的作品足以为你不在:-)

一个有效的电子邮件地址的话,使用的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; 
+0

$text = "asdfasfd asdf [email protected] 123123 sdf [email protected]"; preg_replace("/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i", "", $text); echo "
non mails > $text";
无法正常工作。 – 2011-06-07 09:09:22

+0

@Demon_athens这就是为什么我说“*如果提到的正则表达式对你有效*”。我很清楚,没有任何正则表达式可以实际过滤出电子邮件地址,但如果这对他的文本有用,我该争论谁? – 2011-06-07 09:12:45

+0

实际上,preg_match_all命令效果很好。与preg_replace相同的事情不起作用,所以我想我在这里做错了什么。 – 2011-06-07 09:15:46

1

如果使用preg_replace($pattern, "", $string)然后你会得到这已经是去掉给定的模式匹配一​​切的字符串。然后,您可以将该字符串标记(即调用split)以获取与该模式不匹配的单词列表。

+0

看起来像贝瑞击败我吧! – 2011-06-07 08:41:34

相关问题