Маркетинг путем е-поште и аутоматизација маркетинга путем е-поштеЦРМ и платформе података

Како потврдити адресу е-поште са регуларним изразима (Регек)

Практично сваки програмски језик данас подржава регуларне изразе. Иако их неки програмери не воле, они су заиста најбоља пракса јер обично извршавају функције као што је валидација изузетно брзо са мање ресурса сервера. Адресе е-поште су савршен пример... где се могу лако проверити да би се осигурало да су правилно форматиране.

Имајте на уму да валидација није верификација. Валидација једноставно значи да прослеђени подаци прате стандардни формат који је правилно конструисан. Неке занимљиве ствари о адресама е-поште које би могле бити пропуштене након валидације.

Колико дуго може бити адреса е-поште?

Данас сам морао мало да копам да бих је пронашао, али да ли сте знали која је важећа дужина адресе е-поште? Заправо је разбијен на делове ... Наме@Домаин.цом. Ово је према РФЦКСНУМКС.

  1. Име може имати 1 до 64 знака.
  2. Домен може имати 1 до 255 знакова.

То значи да би ово могла бити важећа адреса е-поште:

loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc@loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com

Покушајте да то поставите на визит карту! Иронично, већина поља за адресу е-поште је ограничена на 100 знакова на вебу... што је технички нетачно. Неки од других регуларних израза који се користе за валидацију адреса е-поште такође траже троцифрени домен највишег нивоа, као што је .цом; међутим, нема ограничења на дужину домене највишег нивоа (на пример. Martech Zone има 4 цифре – .зона).

Стандардизација адресе е-поште је много сложенија него што мислите. Када је написано у складу са стандардом, ево правог регуларног израза за адресу е-поште, заслуга за Регекр:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

ХТМЛ5 чак и не треба валидацију

Најлакши начин да се осигура да је е-пошта важећа у складу са стандардом је коришћење ХТМЛ5 поља за унос е-поште:

<input type='email' name='email' placeholder='name@domain.com' />

Међутим, постоје случајеви када ће ваша веб апликација и даље желети да потврди адресу е-поште и у прегледачу када се унесе и када се пошаље на ваш сервер.

Регек за исправну адресу е-поште у ПХП-у

Мало људи то схвата, али ПХП сада има уграђен РФЦ стандард функција валидације филтера.

if(filter_var("name@domain.com", FILTER_VALIDATE_EMAIL)) {
    // Valid
}
else {
    // Not Valid
}

Редовни израз за исправну адресу е-поште у Јавасцрипт-у

Не морате да имате превише сложен стандард за проверу структуре адресе е-поште. Ево једноставног начина коришћења ЈаваСцрипт-а.

function validateEmail(email) 
{
    var re = /\\S+@\\S+/;
    return re.test(email);
}

Наравно, то није у складу са РФЦ стандардом, па ћете можда желети да потврдите сваки одељак података да бисте били сигурни да је валидан. Овај регуларни израз ће бити у складу са око 99.9% адреса е-поште. Није у потпуности у складу са стандардом, али је корисно за готово сваки пројекат.

function validateEmail(email) 
{
  var re = /^(?:[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/;

  return re.test(email);
}

Заслуге за ове примере припадају ХТМЛ.форм.гуиде.

Douglas Karr

Douglas Karr је оснивач Martech Zone и признати стручњак за дигиталну трансформацију. Доуг је Уводник и маркетиншки јавни говорник. Он је потпредседник и суоснивач Highbridge, фирма специјализована за помоћ предузећима у дигиталној трансформацији и максимизирању њихових технолошких улагања користећи Салесфорце технологије. Развио је стратегије дигиталног маркетинга и производа за Делл Тецхнологиес, ГоДадди, Салесфорце, Вебтрендс, и СмартФОЦУС. Доуглас је такође аутор Корпоративно блогање за лутке и ко-аутор Боља пословна књига.

Komentari

  1. За обрасце са више адреса е-поште, било би добро да урадите цласс=”емаиладдресс”. Ако имате библиотеку прототипе.јс (http://www.prototypejs.org) на страници можете урадити нешто овако:

    вар валид = труе;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$('.емаиладдресс').еацх( фунцтион(емаил) {
    иф (!филтер.тест(емаил.валуе)) {
    алерт(?Молимо да унесете исправну адресу е-поште?);
    емаил.фоцус;
    валид = фалсе;
    }
    });
    повратак валидан;

  2. Свиђа ми се идеја, али бих оклевао да усвојим овај одређени регуларни израз без описа које легалне адресе е-поште не прихвата и које илегалне адресе дозвољава.

    За пример регуларног израза који ради пристојан посао уз објашњење које случајеве не покрива, погледајте ово:

    http://www.regular-expressions.info/email.html

    Моја лична преференција је да покријем већину једноставних случајева и издам упозорење за све остало уместо да га одбијем. Ако Боб заиста жели да се покори боб@цом.мусеум више него боб@мусеум.цом, зашто му не дозволити?

    1. Здраво Рег,

      Можете тестирати Регек користећи ан Онлине Регек Тестер.

      Такође, дефинитивно постоји много више што се може учинити ако желите да осигурате емаил адреса важи у складу са РФЦ-ом.

      Постоји неколико разлога да не дозволите некоме да унесе неважећу адресу е-поште:
      1. Изнервираће се на вас када е-маил који су очекивали не прође – без обзира на то да ли сте ви криви што је адреса погрешно унета.
      2. Ако је цом.мусеум био важећи домен и, рецимо, Иахоо! управљао њоме – свака адреса е-поште која је одбијена имала би негативан утицај на репутацију ваше компаније за испоруку е-поште. Ово може довести до блокирања свих е-порука ваше компаније.
      3. Ако вам је провајдер услуга е-поште дозволио да унесете боб@цом.мусеум, такође бисте платили за сваку е-пошту послату на ту адресу е-поште све док не откаже претплату на ту адресу због одбијања. Избегавао бих се било каквог ЕСП-а који би дозволио такву неважећу адресу е-поште – они само узимају ваш новац!

      Хвала што си застао!
      Даг

  3. Постоји много једноставнији начин за писање израза:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    – Са завршним модификатором /и нема потребе да означавате опсег великих слова.
    – Не знам ни за један ТЛД са бројевима у њему.
    Уз напомену, дозвољавам ТЛД са до 6 знакова; нови стижу редовно и никад се не зна (па, неки будући можда чак имају и бројеве, знам).

  4. Здраво,

    Покушавам да користим ово у постојећем облику у реалном времену, али изгледа да се ово не потврђује у реалном времену као што је ваша провера јачине лозинке…

    Или, јесам ли само толико неупућен, и не ради ми то?

    1. Такође се чини да не обрађује знак плус, што је важеће.

      Погледајте: http://www.dominicsayers.com/isemail/

      У ширем смислу, ово је кључни проблем са исецањем и лепљењем кода, који сам по себи заслужује пуну дискусију.

      @роббислаугхтер.цом

  5. Само мала исправка: Регуларни израз има додатни ()+ на крају. Требало би да гласи:

    ^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$

    Са првим ТЛД-ови било које дужине би били прихваћени (што није суштински погрешно као што су други истакли, али ако је то била намера, израз би се могао скратити).

  6. Можете ли објаснити регуларни израз овог кода и како он функционише? Такође о .тест – Да ли је .тест подразумевана изјава у јавасцрипт-у за проверу ствари као што сте урадили у коду изнад?

  7. Ово је кратак код за изражавање е-поште-

    функција валидатеЕмаил(ид)
    {
    вар емаилПаттерн = /^[а-зА-З0-9._-]+@[а-зА-З0-9.-]+.[а-зА-З]{2,4}$/;
    ретурн емаилПаттерн.тест(ид);

    }
    Деепак Раи
    варанаси

  8. Ово је кратак код за изражавање е-поште-

    функција валидатеЕмаил(ид)
    {
    вар емаилПаттерн = /^[а-зА-З0-9._-]+@[а-зА-З0-9.-]+.[а-зА-З]{2,4}$/;
    ретурн емаилПаттерн.тест(ид);

    }
    Деепак Раи
    варанаси

  9. Хвала, али постоји грешка у овом редовном изразу. Нисам стручњак за регуларне изразе, али сам покушао е-пошту:

    тест тест

    и прошао је регуларни израз... Приметио сам да му недостаје избегавање "." па би требало да буде:

    /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/

  10. Па, ово је само груба провера, али не и 100% тачна, на пример, ово би било у реду јохн_дое.@гмаил.цом што заправо није важећа е-маил адреса (тачка није дозвољена као последњи знак у локалном делу е-поште).
    Такође би прихватио јохн…дое@гмаил.цом што је такође неважеће пошто у низу не може бити више од једне тачке.

    Ово су само неке мане које сам приметио на први поглед.
    Моја намера није само да укажем на ово у случају да неко планира да ово користи као безбедносну проверу – недовољно безбедно.

    За информације о важећим адресама е-поште погледајте ово: http://en.wikipedia.org/wiki/E-mail_address

  11. Деепак,

    У ствари, мислим да треба да примените излаз за тачку (“). Дакле, ваша функција би требало да буде:

    функција валидатеЕмаил(ид)
    {
    вар емаилПаттерн = /^[а-зА-З0-9._-]+@[а-зА-З0-9.-]+.[а-зА-З]{2,4}$/;
    ретурн емаилПаттерн.тест(ид);

    }

    У супротном, тачка би значила „било који знак“. Верујем да такве посебне карактере треба побећи.

    Поздрави,

    Федерицо

  12. функција валидатеЕмаил(флд) {
    вар еррор=””;
    вар тфлд = трим(флд.валуе); // вредност поља са искљученим размаком
    вар емаилФилтер = /^[^@]+@[^@.]+.[^@]*вв$/ ;
    вар иллегалЦхарс= /[(),;:\”[]]/ ;

    иф (флд.валуе == „Унесите своју адресу е-поште“) {

    еррор = “Молимо унесите своју адресу е-поште.н”;
    } елсе иф (!емаилФилтер.тест(тфлд)) { //тестирај имејл на недозвољене знакове

    еррор = “Молимо унесите исправну адресу е-поште.н”;
    } елсе иф (флд.валуе.матцх(иллегалЦхарс)) {

    еррор = “Молимо унесите исправну адресу е-поште.н”;
    }
    повратна грешка;
    }

  13. функција валидатеЕмаил(флд) {
    вар еррор=””;
    вар тфлд = трим(флд.валуе); // вредност поља са искљученим размаком
    вар емаилФилтер = /^[^@]+@[^@.]+.[^@]*вв$/ ;
    вар иллегалЦхарс= /[(),;:\”[]]/ ;

    иф (флд.валуе == „Унесите своју адресу е-поште“) {

    еррор = “Молимо унесите своју адресу е-поште.н”;
    } елсе иф (!емаилФилтер.тест(тфлд)) { //тестирај имејл на недозвољене знакове

    еррор = “Молимо унесите исправну адресу е-поште.н”;
    } елсе иф (флд.валуе.матцх(иллегалЦхарс)) {

    еррор = “Молимо унесите исправну адресу е-поште.н”;
    }
    повратна грешка;
    }

  14. функција валидатеЕмаил(флд) {
    вар еррор=””;
    вар тфлд = трим(флд.валуе); // вредност поља са искљученим размаком
    вар емаилФилтер = /^[^@]+@[^@.]+.[^@]*вв$/ ;
    вар иллегалЦхарс= /[(),;:\”[]]/ ;

    иф (флд.валуе == „Унесите своју адресу е-поште“) {

    еррор = “Молимо унесите своју адресу е-поште.н”;
    } елсе иф (!емаилФилтер.тест(тфлд)) { //тестирај имејл на недозвољене знакове

    еррор = “Молимо унесите исправну адресу е-поште.н”;
    } елсе иф (флд.валуе.матцх(иллегалЦхарс)) {

    еррор = “Молимо унесите исправну адресу е-поште.н”;
    }
    повратна грешка;
    }

  15. функција валидатеЕмаил(флд) {
    вар еррор=””;
    вар тфлд = трим(флд.валуе); // вредност поља са искљученим размаком
    вар емаилФилтер = /^[^@]+@[^@.]+.[^@]*вв$/ ;
    вар иллегалЦхарс= /[(),;:\”[]]/ ;

    иф (флд.валуе == „Унесите своју адресу е-поште“) {

    еррор = “Молимо унесите своју адресу е-поште.н”;
    } елсе иф (!емаилФилтер.тест(тфлд)) { //тестирај имејл на недозвољене знакове

    еррор = “Молимо унесите исправну адресу е-поште.н”;
    } елсе иф (флд.валуе.матцх(иллегалЦхарс)) {

    еррор = “Молимо унесите исправну адресу е-поште.н”;
    }
    повратна грешка;
    }

Шта ви мислите?

Ова страница користи Акисмет како би смањила нежељену пошту. Сазнајте како се ваш коментар обрађује.

Повезани чланци