Как найти электронную почту с более чем 2 точками, используя функцию REGEXP MySQL? - PullRequest
3 голосов
/ 19 марта 2012

У меня большая база данных пользователей с большим количеством спам-аккаунтов электронной почты, например 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, но ее трудно использовать с "точкой".Я перепробовал множество вещей, таких как:

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

Каждый сбой.

Есть идеи?

Ответы [ 2 ]

14 голосов
/ 19 марта 2012

как насчет этого?

SELECT * FROM users WHERE email REGEXP '[.].*[.].*@';

при этом выполняется поиск двух (или более) точек перед @ (что по-прежнему допускает доменные имена из нескольких точек, например .co.uk и т. Д.).

Однако вы должны учитывать возможность того, что некоторые пользователи могут иметь несколько точек в имени пользователя, и это все равно будет допустимым.

1 голос
/ 31 декабря 2012

Насколько я видел, обычно это проблема спама, когда используется учетная запись gmail.com. Большинство законных имен пользователей с несколькими точками будет что-то вроде jason.b.williams@gmail.com - так что спаммеры, которые используют 3 или более точек в своем имени пользователя - я буду обрезать из своей базы данных, и я буду внедрять код в процессе регистрации запретить использование более 2 точек в имени пользователя при использовании адреса Gmail.

SELECT user_email FROM users WHERE email REGEXP '[.].*[.].*[.].*@';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...