Suriin ang Email Address kasama ang JavaScript at Regular na Mga Ekspresyon

Ilang sandali ang nakaraan ay nagtiis ako a Ang Checker ng Lakas ng Password gamit ang JavaScript at Regular na Mga expression. Sa parehong tala na iyon, maaari mo ring suriin ang istraktura ng isang email address na gumagamit ng parehong regular na pamamaraan ng expression (regex).

Kung ang iyong elemento ng form ay mayroong id = "emailaddress" at nagdagdag ka ng isang form onSubmit = "return checkEmail ();", Ito ay isang pagpapaandar ng Javascript na maaari mong magamit upang maibalik ang isang alerto kung ang email address ay may wastong istraktura o hindi:

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;
}
}

Ang pagpapatakbo ay nagpapatunay ng mga nilalaman ng email sa na ng filter. Kung nabigo ang paghahambing, pop up ito ng isang alerto at ibabalik ang pokus sa patlang ng email address!

41 Comments

  1. 1

    Para sa mga form na may maraming mga email address, makabubuting gawin ang class = ”emailaddress”. Kung mayroon kang prototype.js library (http://www.prototypejs.org) kasama sa pahina maaari kang gumawa ng tulad nito:

    var valid = totoo;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). bawat isa (pagpapaandar (email) {
    kung (! filter.test (email.value)) {
    alerto (? Mangyaring magbigay ng wastong email address?);
    email.focus;
    wasto = false;
    }
    });
    bumalik balido;

  2. 5
  3. 7

    Gusto ko ang ideya, ngunit mag-aalangan ako na gamitin ang partikular na regular na expression nang walang paglalarawan kung aling mga ligal na email address ang hindi nito tinanggap at aling mga iligal na address ang pinapayagan nito.

    Para sa isang halimbawa ng isang regular na expression na gumagawa ng disenteng trabaho kasabay ng isang paliwanag kung aling mga kaso ang hindi nito sakop, tingnan ito:

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

    Ang aking personal na kagustuhan ay upang sakupin ang karamihan sa mga simpleng kaso at mag-isyu ng isang babala para sa lahat pa sa halip na tanggihan ito. Kung gusto talaga ni Bob isumite ang sto bob@com.museum sa halip na bob@museum.com, bakit hindi mo siya payagan?

    • 8

      Kumusta Reg,

      Maaari mong subukan ang Regex na gumagamit ng isang Online Regex Tester.

      Gayundin, tiyak na mas marami pa ang maaaring magawa kung nais mong matiyak ang email address ay wasto alinsunod sa RFC.

      Mayroong ilang mga kadahilanan upang hindi payagan ang isang tao na magpasok ng isang hindi wastong email address:
      1. Maiinis sila sa iyo kapag hindi na nakalusot ang email na inaasahan nila - hindi alintana kung ikaw ang may kasalanan o hindi wastong naipasok ang address.
      2. Kung ang com.museum ay isang wastong domain at, sabihin nating, Yahoo! pinamamahalaan ito - ang anumang email address na nag-bounce ay maaaring magkaroon ng negatibong epekto sa reputasyon ng iyong kumpanya para sa paghahatid ng email. Maaari itong humantong sa lahat ng email ng iyong kumpanya ay na-block.
      3. Kung pinayagan ka ng iyong email service provider na pumasok bob@com.museum, babayaran mo rin ang bawat email na ipinadala sa email address na iyon hanggang sa ma-unsubscribe nila ang address na iyon dahil sa mga bounces. Gusto kong iwanan ang anumang ESP na magpapahintulot sa isang hindi wastong email address na tulad nito - Kinukuha lang nila ang iyong pera!

      Salamat sa pagdating!
      Doug

  4. 9
  5. 10

    Mayroong mas simpleng paraan upang isulat ang expression:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Gamit ang pangwakas na modifier / i hindi na kailangang ipahiwatig ang itaas na saklaw ng kaso.
    - Wala akong alam TLD may mga numero dito.
    Sa isang tala sa gilid, pinapayagan ko ang TLD na may hanggang sa 6 chars; ang mga bago ay regular na dumarating at hindi mo alam (mabuti, kahit na ang mga hinaharap ay maaaring may mga numero dito, alam ko).

  6. 11

    Kamusta,

    Tring ko itong gagamitin sa isang mayroon nang form sa real-time, ngunit hindi ito lumilitaw na nagpapatunay sa realtime tulad ng iyong checker ng lakas ng password…

    O, ako lang ba ang clueless, at hindi ito gumagana para sa akin?

  7. 12

    btw, gusto ko talaga kung ano ang nangyayari dito, ang iyong mga tutorial ay napaka-simple, tiyak na mai-bookmark ko ang isang ito….

  8. 13
  9. 16
  10. 17

    Isang maliit na pagwawasto lamang: Ang regular na expression ay may dagdag () + sa dulo. Dapat basahin ito:

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

    Sa una sa anumang haba ang mga TLD ay tatanggapin (na hindi intrinsecally mali tulad ng itinuro ng iba, ngunit kung iyon ang intensyon ang expression ay maaaring paikliin).

  11. 18

    Maaari mo bang ipaliwanag ang regular na pagpapahayag ng code na ito at kung paano ito gumagana? Tungkol din sa .test - Ang .test ba ay isang default na pahayag sa javascript upang suriin ang mga bagay na tulad ng ginawa mo sa code sa itaas?

  12. 19

    Ito ay isang maikling code para sa pagpapahayag ng email-

    pagpapaandar validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._ -
    ibalik ang emailPattern.test (id);

    }
    Deepak Rai
    varanasi

  13. 20

    Ito ay isang maikling code para sa pagpapahayag ng email-

    pagpapaandar validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._ -
    ibalik ang emailPattern.test (id);

    }
    Deepak Rai
    varanasi

  14. 21
  15. 22
  16. 23

    Salamat, ngunit may isang error sa regex na ito. Hindi ako dalubhasa sa regex, ngunit sumubok ako ng email:

    pagsubok @ pagsubok

    at naipasa nito ang regex ... Napansin kong kulang ito sa pagtakas sa "." kaya dapat ito ay:

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

  17. 24
  18. 27

    Sa gayon, ito ay isang magaspang lamang na tseke ngunit hindi 100% tumpak, halimbawa magiging okay ito john_doe. @ gmail.com na kung saan ay talagang hindi wastong e-mail address (hindi pinapayagan ang tuldok bilang isang huling karakter sa lokal na bahagi ng e-mail).
    Tanggapin din nito john…doe@gmail.com na hindi wasto din dahil hindi maaaring may higit sa isang tuldok sa isang pagkakasunud-sunod.

    Ito ay ilan lamang sa mga kamalian na napansin ko sa unang tingin.
    Ang aking hangarin ay hindi bashing upang maituro lamang ito kung sakaling may nagpaplano na gamitin ito bilang isang security check - hindi sapat na ligtas.

    Para sa impormasyon tungkol sa wastong mga e-mail address suriin ito: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Sa totoo lang, sa palagay ko kailangan mong mag-apply ng pagtakas para sa tuldok ("."). Kaya, dapat ang iyong pagpapaandar, sa halip:

    pagpapaandar validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._ -
    ibalik ang emailPattern.test (id);

    }

    Kung hindi man, ang tuldok ay nangangahulugang "anumang character". Naniniwala akong kailangang makatakas ang mga nasabing espesyal na character.

    Regards,

    Federico

  20. 29

    pagpapaandar validateEmail (fld) {
    var error = "";
    var tfld = trim (fld.value); // halaga ng patlang na may puting puti pinutol
    var emailFilter = /^[ ###@iwan+@[^@.iwan+.[^@iwan*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    kung (fld.value == "Ipasok ang iyong email Address") {

    error = "Mangyaring ipasok ang iyong Email address.n";
    } iba pa kung (! emailFilter.test (tfld)) {// pagsubok ng email para sa mga iligal na character

    error = "Mangyaring maglagay ng wastong email address.n";
    } iba pa kung (fld.value.match (illegalChars)) {

    error = "Mangyaring maglagay ng wastong email address.n";
    }
    bumalik error;
    }

  21. 30

    pagpapaandar validateEmail (fld) {
    var error = "";
    var tfld = trim (fld.value); // halaga ng patlang na may puting puti pinutol
    var emailFilter = /^[ ###@iwan+@[^@.iwan+.[^@iwan*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    kung (fld.value == "Ipasok ang iyong email Address") {

    error = "Mangyaring ipasok ang iyong Email address.n";
    } iba pa kung (! emailFilter.test (tfld)) {// pagsubok ng email para sa mga iligal na character

    error = "Mangyaring maglagay ng wastong email address.n";
    } iba pa kung (fld.value.match (illegalChars)) {

    error = "Mangyaring maglagay ng wastong email address.n";
    }
    bumalik error;
    }

  22. 31

    pagpapaandar validateEmail (fld) {
    var error = "";
    var tfld = trim (fld.value); // halaga ng patlang na may puting puti pinutol
    var emailFilter = /^[ ###@iwan+@[^@.iwan+.[^@iwan*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    kung (fld.value == "Ipasok ang iyong email Address") {

    error = "Mangyaring ipasok ang iyong Email address.n";
    } iba pa kung (! emailFilter.test (tfld)) {// pagsubok ng email para sa mga iligal na character

    error = "Mangyaring maglagay ng wastong email address.n";
    } iba pa kung (fld.value.match (illegalChars)) {

    error = "Mangyaring maglagay ng wastong email address.n";
    }
    bumalik error;
    }

  23. 32

    pagpapaandar validateEmail (fld) {
    var error = "";
    var tfld = trim (fld.value); // halaga ng patlang na may puting puti pinutol
    var emailFilter = /^[ ###@iwan+@[^@.iwan+.[^@iwan*ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    kung (fld.value == "Ipasok ang iyong email Address") {

    error = "Mangyaring ipasok ang iyong Email address.n";
    } iba pa kung (! emailFilter.test (tfld)) {// pagsubok ng email para sa mga iligal na character

    error = "Mangyaring maglagay ng wastong email address.n";
    } iba pa kung (fld.value.match (illegalChars)) {

    error = "Mangyaring maglagay ng wastong email address.n";
    }
    bumalik error;
    }

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

Ano sa tingin ninyo?

Ang site na ito ay gumagamit ng Akismet upang mabawasan ang spam. Alamin kung paano naproseso ang data ng iyong komento.