Mailcheck.js — проверка емейла на опечатки


    jQuery плагин Mailcheck (github) — клиентсайд проверка емейла на опечатки по заранее определённму списку (к примеру, наиболее популярных почтовых сервисов).

    Демка | сорсы демки (jsfiddle)


    По заявлению (en) авторов (Kicksend), сей плагин увеличил кол-во подтверждений емейла при регистрации на 50%.






    Чтобы плагин проверял на опечатки кириллические домены, правим сорсы (Line 30):
    var result = Kicksend.mailcheck.suggest(encodeURI(this.val()), opts.domains);
    заменяем encodeURI(this.val()) на this.val() (важно! кодировка должна быть UTF-8)

    Проверяем:




    Вариант нелогичного предложения


    В плагине используется алгоритм поиска наибольшей общей подстроки, который, в целом, хорошо справляется с предложениями исправлений (смотрите демку), однако, есть нетривиальные случаи:

    Входные данные:
    домены: [«ua.com», «ui.com»]
    емейл: user@uo.com

    Вывод: user@ua.com

    Если посмотреть на клавиатуру, то очевидно, что «o» ближе к «i» — другому домену — ui.com.

    Предлагаю хабраюзерам обсудить — как улучшить алгоритм, чтобы он корректно отрабатывал аналогичные опечатки.

    (github issue #20)

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 20

      +7
      F13?
        +2
        return
          –6
          Ахах, я хотел нажать, посмотреть что будет :D
          0
          Можно смотреть популярность доменов в базе, и на этом строить предложения.
          Т.е. если больше доменов ua.com — говорить что возможно имели ввиду его.
            0
            Не хватает функции ping для электронных ящиков.
              0
              Это уже серверсайд. В приципе, ничего сложно — добавить перед проверкой алгоритмом ajax вызов на сервер, а на колбэк — уже далее проверка.
            –3
            «в виду»
            therules.ru/hyphen-prepositions/#
            Пишутся слитно:
            ввиду (в значении «по причине»),
            Но раздельно пишется в виду, когда оно не имеет значения предлога, например: иметь в виду; расположиться в виду неприятеля.
              –5
              среднее образование + много свободного времени
                +1
                Действительно, исправил. Но на будущее — в личку, пожалуйста.
                  0
                  Возможно — вводное слово, оно отделяется запятой.
                    +1
                    Упс, надо было в личку. Извините.
                +1
                есть алгоритм keyboard distance, им можно заменить имеющийся там sift. пример на перле: cpansearch.perl.org/src/KRBURTON/String-KeyboardDistance-1.01/KeyboardDistance.pm
                  0
                  Загвоздка в том, что он не понимать строки разной длинны, точнее понимать, но не так как нужно:

                  If one string is longer than the other the remaining characters are counted as having the same value as the maximum distance.

                  Но это лучше, чем ничего.
                  +1
                  На одном проекте периодически набирают gmail.ru. Ваш плагин предлагает вместо этого mail.ru.
                    0
                    Может есть смысл использовать Google.API? Или оно там и используется?
                      –3
                      21 марта, ссылка на MailCheck появляется на Hacker News, 28 марта она уже на хабре!
                        0

                        Сейчас кстати появился одноименный сервис емейл валидации mailcheck.co
                        Только там помимо проверки что емейл существует еще показывают инфу из социальных сетей. Другая задача — он не поможет угадать ошибку пользователя при вводе домена, но вполне может предостеречь от отправки письма на несуществующий домен.
                        Вообще нужно разделять понятия.
                        Валидация емейла — проверка что с точки зрения стандарта емейл адрес корректен.
                        Верификация — проверка что емейл существует.
                        Если совместить валидацию библиотекой mailcheck.js и верификацию сервисом — баунсов не будет вообще :)
                        Но сложно все собрать в кучу.

                        Only users with full accounts can post comments. Log in, please.