Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我需要一个从字符串返回非电子邮件的正则表达式_Php_Regex - Fatal编程技术网

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

Php 我需要一个从字符串返回非电子邮件的正则表达式,php,regex,Php,Regex,经过大量搜索,我找到了这个正则表达式,它可以在字符串中查找电子邮件: preg_match_all("/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i", $text, $output); 我怎样才能得到确切的反作用呢?我真的需要知道哪些词不是有效的电子邮件地址:-) 我怎样才能得到确切的反作用呢?我真的需要知道哪些词不是有效的电子邮件地址:-) 如果上述正则表达式对您足够有效,请使用preg_r

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

preg_match_all("/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i", $text, $output);
我怎样才能得到确切的反作用呢?我真的需要知道哪些词不是有效的电子邮件地址:-)

我怎样才能得到确切的反作用呢?我真的需要知道哪些词不是有效的电子邮件地址:-)

如果上述正则表达式对您足够有效,请使用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;

如果使用
preg\u replace($pattern,“,$string)
则会返回一个字符串,该字符串已删除与给定模式匹配的所有内容。然后,您可以标记此字符串(即,在其上调用
split
),以获得与模式不匹配的单词列表。

关于电子邮件验证的好文章无效单词的数量是无限的@弗雷德里克,但是不是有一个有限的数量的话吗?看起来贝瑞打败了我<代码>$text=“asdfasfd asdftest@test.com123123自卫队123test@test.com"; 预替换(“/[a-z0-9]+([\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i',”,$text);回显“
非邮件>$text”
不能正常工作。@Demon_athens,这就是为什么我说“如果所提到的正则表达式对您足够有效。”我很清楚,没有正则表达式可以实际过滤电子邮件地址,但是如果这对他的文本有效,我该和谁争论呢?实际上preg_match_all命令非常有效。preg_replace也不起作用,所以我猜我做错了什么。@Demon_雅典啊,我明白了,我误解了你,对不起。这是因为preg_replace返回被替换的文本,而不是通过引用替换。根据更新后的示例,只需执行$text=preg_replace(),就可以解决问题。@Demon_雅典您并不愚蠢,这也是我自己的疏忽。发生这种情况;)