Ստուգեք էլփոստի հասցեն JavaScript- ով և կանոնավոր արտահայտություններով

Քիչ առաջ ես դրեցի ա Գաղտնաբառի ուժի ստուգիչ ՝ օգտագործելով JavaScript և կանոնավոր արտահայտություններ, Այդ նույն գրության վրա կարող եք նաև ստուգել էլփոստի հասցեի կառուցվածքը ՝ օգտագործելով նույն կանոնավոր արտահայտման (regex) մեթոդաբանությունը:

Եթե ​​ձեր ձևի տարրը ունի id = ”էլեկտրոնային հասցե” և դուք ձև եք ավելացնում onSubmit = ”վերադարձի ստուգում E-mail ();«, Սա Javascript ֆունկցիա է, որը կարող եք օգտագործել ՝ նախազգուշացում վերադարձնելու համար, եթե էլ-փոստի հասցեն ունի վավեր կառուցվածք, թե ոչ.

function checkEmail() {
var email = document.getElementById('emailaddress');
var filter = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (!filter.test(email.value)) {
alert('Please provide a valid email address');
email.focus;
return false;
}
}

Գործառույթը վավերացնում է էլփոստի բովանդակությունը զտիչի վրա: Եթե ​​համեմատությունը ձախողվի, այն հայտնվում է ահազանգ և ուշադրությունը վերադառնում է էլ. Փոստի հասցեի դաշտ:

41 Comments

  1. 1

    Բազմաթիվ էլփոստի հասցեներով ձևերի համար լավ կլինի անել class = ”emailaddress”: Եթե ​​դուք ունեք prototype.js գրադարան (http://www.prototypejs.org) էջում ներառված, դուք կարող եք անել նման բան.

    var վավեր = ճշմարիտ;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). յուրաքանչյուր (գործառույթ (էլ. փոստ) {
    եթե (! filter.test (էլ. փոստի արժեք)) {
    նախազգուշացում (? Խնդրում ենք տրամադրել վավեր էլ. փոստի հասցե);
    էլ. փոստ. ֆոկուս;
    վավեր = կեղծ;
    }
    });
    վերադարձը ուժի մեջ է;

  2. 5
  3. 7

    Ինձ դուր է գալիս գաղափարը, բայց ես տատանվում էի ընդունել այս հատուկ կանոնավոր արտահայտությունը `առանց նկարագրելու, թե որ օրինական էլ. Փոստի հասցեները չի ընդունում և որ անօրինական հասցեները թույլ է տալիս:

    Սովորական արտահայտության օրինակի համար, որը պատշաճ աշխատանք է կատարում, բացատրելով, թե որ դեպքերը չի լուսաբանում, տե՛ս սա.

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

    Իմ անձնական նախընտրությունն այն է, որ լուսաբանեմ պարզ դեպքերի մեծ մասը և նախազգուշացում տամ մնացածի համար, քան մերժեմ այն: Եթե ​​Բոբն իսկապես ցանկանում է ներկայացնել, bob@com.museum այլ bob@museum.com, ինչու չթողնել նրան:

    • 8

      Ողջույն Reg,

      Դուք կարող եք ստուգել Regex- ը `օգտագործելով Առցանց Regex փորձարկող.

      Բացի այդ, հաստատ շատ ավելին կա, որ կարելի է անել, եթե ուզում եք ապահովել փոստի հասցեն վավեր է RFC- ին համապատասխան:

      Մի քանի պատճառ կա, որ ինչ-որ մեկին թույլ չտա անվավեր էլփոստի հասցե մուտքագրել.
      1. Նրանք կզայրացնեն ձեզնից, երբ իրենց սպասած էլ.փոստը չհասնի ՝ անկախ նրանից ՝ ձեր մեղքով էր հասցեն սխալ մուտքագրվել, թե ոչ:
      2. Եթե com.museum- ը վավեր տիրույթ էր և, ասենք, Yahoo! շահագործում է այն. ցանկացած հետադարձ էլեկտրոնային հասցե բացասաբար կանդրադառնա ձեր ընկերության կողմից էլփոստի առաքման հեղինակության վրա: Սա կարող է հանգեցնել ձեր ընկերության բոլոր էլփոստի արգելափակմանը:
      3. Եթե ձեր էլ.փոստի ծառայության մատակարարը թույլ է տվել մուտք գործել bob@com.museumԴուք նաև կվճարեիք այդ էլ. հասցեին ուղարկված յուրաքանչյուր էլ.փոստի համար, մինչև նրանք չբաժանորդագրեն այդ հասցեն վերադարձի պատճառով: Ես խուսափում էի ցանկացած ESP- ից, որը թույլ կտար անվավեր էլփոստի նման հասցե `նրանք պարզապես վերցնում են ձեր փողերը:

      Շնորհակալություն դադարեցնելու համար:
      Doug

  4. 9
  5. 10

    Արտահայտությունը գրելու շատ ավելի պարզ միջոց կա.
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Վերջնական փոփոխիչով / i անհրաժեշտ չէ նշել մեծատառերի տիրույթը:
    - Ես ոչ մեկ չգիտեմ TLD մեջը թվերով:
    Մի կողմից, ես թույլ եմ տալիս TLD- ն ունենալ մինչև 6 բնույթ: նորերը պարբերաբար են գալիս, և դուք երբեք չգիտեք (գիտեմ, սոմե ապագաները կարող են նույնիսկ թվեր ունենալ):

  6. 11

    Hi այնտեղ,

    Փորձում եմ սա օգտագործել իրական ձևով իրական ժամանակում, բայց կարծես թե դա իրական ժամանակում չի վավերացվում, ինչպես ձեր գաղտնաբառի ուժի ստուգիչը

    Թե՞ ես հենց այդքան անթերի եմ, և դա ինձ համար չի ստացվում:

  7. 12
  8. 13
  9. 16
  10. 17

    Պարզապես մի փոքր ուղղում. Կանոնավոր արտահայտությունը վերջում ունի հավելյալ () +: Այն պետք է կարդա.

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

    Առաջինով TLD- ները ցանկացած երկարությամբ ընդունվում են (ինչը բնորոշ չէ սխալ, ինչպես նշում են մյուսները, բայց եթե դա լիներ այդ նպատակը, ապա արտահայտությունը կարող էր կրճատվել):

  11. 18

    Կարո՞ղ եք բացատրել այս կոդի կանոնավոր արտահայտությունը և ինչպես է այն գործում: Նաև .test- ի մասին. Արդյո՞ք .test- ը լռելյայն հայտարարություն է javascript- ում ՝ ստուգելու համար այն բաները, ինչպիսին դուք արեցիք վերոնշյալ կոդում:

  12. 19
  13. 20

    Սա էլփոստի արտահայտման կարճ կոդ է-

    գործառույթի վավերացում Էլ. փոստ (id)
    {
    var emailPattern = /^^a-zA-Z0-9._-]
    վերադարձնել emailPattern.test (id);

    }
    Դիպակ Ռայ
    վարանասի

  14. 21
  15. 22
  16. 23

    Շնորհակալություն, բայց այս regex- ում սխալ կա: Ես regex- ի մասնագետ չեմ, բայց փորձեցի էլ. Փոստով.

    թեստ @ թեստ

    և այն անցավ regex- ով… Ես նկատեցի, որ պակասում է «-ից» խուսափելը: այնպես որ պետք է լինի.

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

  17. 24
  18. 27

    Դե, սա պարզապես կոպիտ ստուգում է, բայց ոչ 100% ճշգրիտ, օրինակ ՝ դա նորմալ կլինի john_doe. @ gmail.com որն իրականում էլեկտրոնային փոստի հասցե չէ (կետը չի թույլատրվում որպես վերջին նիշ էլեկտրոնային փոստի տեղական մասում):
    Նաև կընդուներ john…doe@gmail.com ինչը նույնպես անվավեր է, քանի որ հաջորդականությամբ մեկ կետից ավելին չի կարող լինել:

    Սրանք ընդամենը մի քանի թերություններ են, որոնք ես նկատեցի առաջին հայացքից:
    Իմ մտադրությունը չէ, որ կխթանի, պարզապես դա մատնանշելու դեպքում, եթե ինչ-որ մեկը նախատեսում է օգտագործել դա որպես անվտանգության ստուգում `բավարար չափով ապահով չէ:

    Վավեր էլ-փոստի հասցեների վերաբերյալ տեղեկությունների համար ստուգեք սա ՝ http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Դիպակ,

    Իրականում, կարծում եմ, որ կետի համար պետք է դիմել փախուստի («.»): Այսպիսով, ձեր գործառույթը պետք է լինի, փոխարենը ՝

    գործառույթի վավերացում Էլ. փոստ (id)
    {
    var emailPattern = /^^a-zA-Z0-9._-]
    վերադարձնել emailPattern.test (id);

    }

    Հակառակ դեպքում կետը կնշանակեր «ցանկացած նիշ»: Կարծում եմ ՝ պետք է խուսափել նման հատուկ հերոսներից:

    Regards,

    Ֆեդերիկո

  20. 29

    գործառույթը validateEmail (fld) {
    var սխալ = ””;
    var tfld = լրամշակում (fld. արժեք); // սպիտակ տարածքով կտրված դաշտի արժեքը
    var emailFilter = /^^^@^+@^^@.^+.^^@ ]*** /;
    var անօրինական Chars = / [(),; \ "[]] /;

    եթե (fld.value == «Մուտքագրեք ձեր էլ. փոստի հասցեն») {

    error = «Խնդրում ենք մուտքագրել ձեր էլ. փոստի հասցեն. n»;
    } other if (!! emailFilter.test (tfld)) {// էլեկտրոնային փոստի ստուգում անօրինական նիշերի համար

    error = «Խնդրում ենք մուտքագրել վավեր էլ.հասցե. n»;
    } other if (fld.value.match (անօրինական Chars)) {

    error = «Խնդրում ենք մուտքագրել վավեր էլ.հասցե. n»;
    }
    վերադարձի սխալ;
    }

  21. 30

    գործառույթը validateEmail (fld) {
    var սխալ = ””;
    var tfld = լրամշակում (fld. արժեք); // սպիտակ տարածքով կտրված դաշտի արժեքը
    var emailFilter = /^^^@^+@^^@.^+.^^@ ]*** /;
    var անօրինական Chars = / [(),; \ "[]] /;

    եթե (fld.value == «Մուտքագրեք ձեր էլ. փոստի հասցեն») {

    error = «Խնդրում ենք մուտքագրել ձեր էլ. փոստի հասցեն. n»;
    } other if (!! emailFilter.test (tfld)) {// էլեկտրոնային փոստի ստուգում անօրինական նիշերի համար

    error = «Խնդրում ենք մուտքագրել վավեր էլ.հասցե. n»;
    } other if (fld.value.match (անօրինական Chars)) {

    error = «Խնդրում ենք մուտքագրել վավեր էլ.հասցե. n»;
    }
    վերադարձի սխալ;
    }

  22. 31

    գործառույթը validateEmail (fld) {
    var սխալ = ””;
    var tfld = լրամշակում (fld. արժեք); // սպիտակ տարածքով կտրված դաշտի արժեքը
    var emailFilter = /^^^@^+@^^@.^+.^^@ ]*** /;
    var անօրինական Chars = / [(),; \ "[]] /;

    եթե (fld.value == «Մուտքագրեք ձեր էլ. փոստի հասցեն») {

    error = «Խնդրում ենք մուտքագրել ձեր էլ. փոստի հասցեն. n»;
    } other if (!! emailFilter.test (tfld)) {// էլեկտրոնային փոստի ստուգում անօրինական նիշերի համար

    error = «Խնդրում ենք մուտքագրել վավեր էլ.հասցե. n»;
    } other if (fld.value.match (անօրինական Chars)) {

    error = «Խնդրում ենք մուտքագրել վավեր էլ.հասցե. n»;
    }
    վերադարձի սխալ;
    }

  23. 32

    գործառույթը validateEmail (fld) {
    var սխալ = ””;
    var tfld = լրամշակում (fld. արժեք); // սպիտակ տարածքով կտրված դաշտի արժեքը
    var emailFilter = /^^^@^+@^^@.^+.^^@ ]*** /;
    var անօրինական Chars = / [(),; \ "[]] /;

    եթե (fld.value == «Մուտքագրեք ձեր էլ. փոստի հասցեն») {

    error = «Խնդրում ենք մուտքագրել ձեր էլ. փոստի հասցեն. n»;
    } other if (!! emailFilter.test (tfld)) {// էլեկտրոնային փոստի ստուգում անօրինական նիշերի համար

    error = «Խնդրում ենք մուտքագրել վավեր էլ.հասցե. n»;
    } other if (fld.value.match (անօրինական Chars)) {

    error = «Խնդրում ենք մուտքագրել վավեր էլ.հասցե. n»;
    }
    վերադարձի սխալ;
    }

  24. 33
  25. 34
  26. 35
  27. 36
  28. 37
  29. 38
  30. 39
  31. 40

Ինչ եք կարծում?

Այս կայքը օգտագործում է Akismet- ը սպամի նվազեցման համար: Իմացեք, թե ինչպես է ձեր տվյալները մշակվում.