如何使用REGEXP MySQL功能查找超过2个点的电子邮件?

j0k*_*j0k 3 regex mysql email

我有一个庞大的用户数据库,有很多垃圾邮件电子邮件帐户,喜欢j.o.hnha.r.rold.t.ho.mp.so.n.j.u.n.io.r@gmail.com或者o.f.vst.p.rqlsy.j@gmail.com我想用一个查询删除它们(而不是做一个解析所有数据库的PHP脚本).

我看到MySQL有一个REGEXP函数,但它很难用"dot".我尝试过很多东西:

  • SELECT * FROM users WHERE email REGEXP '([[...]]){2,}'
  • SELECT * FROM users WHERE email REGEXP '(\\.){2,}'
  • SELECT * FROM users WHERE email REGEXP '(.*)[[...]]{2}(.*)'

每一个都失败了.

有任何想法吗 ?

pon*_*cha 14

这个怎么样?

SELECT * FROM users WHERE email REGEXP '[.].*[.].*@';
Run Code Online (Sandbox Code Playgroud)

这会在@之前搜索两个(或更多)点(这仍然允许多点域名,如.co.uk等).

但是,你应该考虑一些用户可能真的在他们的用户名中有多个点,这仍然是合法的.