我只想从我的数据库中获取无效的电子邮件地址,我尝试使用以下查询,但它无法正常工作
$sql=mysql_query("SELECT * FROM mytable WHERE email!='' and email NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$'");
无效的电子邮件是 a.bcdefg-3@abccom
答案 0 :(得分:3)
看起来理查德的答案是正确的,但是,如果使用了整理,它可能无效。 因此,如果您具有区分大小写的排序规则,则可能需要小写字段。
尝试此查询:
SELECT * FROM `mytable` WHERE `email` NOT REGEXP '^[[:alnum:]._%-\+]+@[[:alnum:].-]+[.][[:alnum:]]{2,4}$';
我更新了正则表达式以使用字符类而不是字符范围来避免较低(或较高)的大小写转换。
此外,在某些IDE中,您可能必须逃避“。”有两个反斜杠,因此我使用
[.]
而不是转义点。
我再次更新以允许子域名。
编辑允许+
,感谢@Charlie Brumbaugh评论。
答案 1 :(得分:0)
试试这个:
SELECT * FROM `mytable` WHERE `email` NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$';
为我工作。
此外,请不要使用 MySQL驱动程序,因为它在PHP中已弃用。