Skontrolujte e-mailovú adresu pomocou JavaScriptu a regulárnych výrazov

Pred chvíľou som dal a Kontrola sily hesla pomocou JavaScriptu a regulárnych výrazov. V tej istej poznámke môžete tiež skontrolovať štruktúru e-mailovej adresy pomocou rovnakej metodiky regulárneho výrazu (regex).

Ak váš formulárový prvok obsahuje id = ”emailaddress” a pridáte formulár onSubmit = ”návrat checkEmail ();„, Toto je funkcia Javascript, ktorú môžete použiť na vrátenie upozornenia, ak má e-mailová adresa platnú štruktúru alebo nie:

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

Funkcia overuje obsah e-mailu a obsahu filtra. Ak porovnanie zlyhá, zobrazí sa výstraha a vráti sa fokus späť do poľa e-mailovej adresy!

41 Komentáre

  1. 1

    Pre formuláre s viacerými e-mailovými adresami by bolo dobré urobiť class = ”emailaddress”. Ak máte knižnicu prototype.js (http://www.prototypejs.org), ktorý je uvedený na stránke, môžete urobiť niečo také:

    var valid = true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). each (function (email) {
    if (! filter.test (email.value)) {
    varovanie (? Zadajte platnú e-mailovú adresu?);
    email.focus;
    platný = nepravda;
    }
    });
    návrat platný;

  2. 5
  3. 7

    Páči sa mi táto myšlienka, ale váhal by som s prijatím tohto konkrétneho regulárneho výrazu bez popisu, ktoré legálne e-mailové adresy neprijíma a ktoré nelegálne adresy povoľuje.

    Príklad regulárneho výrazu, ktorý robí slušnú prácu, spolu s vysvetlením, na ktoré prípady sa nevzťahuje, nájdete v tomto článku:

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

    Mojou osobnou preferenciou je pokryť väčšinu jednoduchých prípadov a vydať varovanie pred všetkým ostatným, skôr ako to odmietnuť. Ak Bob naozaj chceš poslať bob@com.museum skôr než bob@museum.com, prečo mu to nedovoliť?

    • 8

      Ahoj,

      Môžete vyskúšať Regex pomocou Online tester regexu.

      Určite je možné urobiť ešte oveľa viac, ak sa chcete ubezpečiť, že e-mailová adresa je platný v súlade s RFC.

      Existuje niekoľko dôvodov, prečo niekomu nedovoliť zadať neplatnú e-mailovú adresu:
      1. Budú vás otravovať, keď e-mail, ktorý očakávali, nedostane - bez ohľadu na to, či to bola vaša chyba, alebo nie, adresa bola zadaná nesprávne.
      2. Ak bola com.museum platnou doménou a povedzme Yahoo! prevádzkoval - akákoľvek e-mailová adresa, ktorá sa odrazila, by mala negatívny vplyv na reputáciu vašej spoločnosti v oblasti doručovania e-mailov. To by mohlo viesť k zablokovaniu všetkých e-mailov vašej spoločnosti.
      3. Ak vám to poskytovateľ e-mailových služieb povolil bob@com.museum, platili by ste tiež za každý e-mail odoslaný na túto e-mailovú adresu, kým túto adresu neodhlási z dôvodu okamžitých odchodov. Vyhýbam by sa každému ESP, ktoré by umožňovalo neplatnú e-mailovú adresu, ako je táto - iba berú vaše peniaze!

      Vďaka za zastavenie!
      Doug

  4. 9
  5. 10

    Existuje oveľa jednoduchší spôsob, ako napísať výraz:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - S konečným modifikátorom / i nie je potrebné označovať rozsah veľkých písmen.
    - O žiadnom neviem TLD s číslami v ňom.
    Pre poznámku povoľujem TLD s až 6 znakmi; nové prichádzajú pravidelne a nikdy neviete (no, niektoré budúce môžu mať dokonca čísla, viem).

  6. 11

    Ahoj,

    Snažím sa to používať v existujúcej podobe v reálnom čase, ale nezdá sa, že by sa to overovalo v reálnom čase, ako je napríklad kontrola sily hesla ...

    Alebo som len taký bezradný a nefunguje to pre mňa?

  7. 12

    btw, veľmi sa mi páči, o čo tu ideš, tvoje návody sú veľmi jednoduché, určite si tento označím ako záložku ....

  8. 13
  9. 16
  10. 17

    Len malá oprava: Regulárny výraz má na konci znak extra () +. Mal by znieť:

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

    S prvou by boli akceptované ľubovoľné dĺžky TLD (čo nie je skutočne nesprávne, ako to už iní zdôraznili, ale ak by to bol zámer, výraz by sa mohol skrátiť).

  11. 18

    Môžete mi prosím vysvetliť regulárny výraz tohto kódu a ako funguje? Tiež o .test - Je .test predvoleným príkazom v JavaScripte na kontrolu vecí, ktoré ste vykonali v kóde vyššie?

  12. 19

    Toto je krátky kód pre e-mailový výraz -

    funkcia validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    návrat emailPattern.test (id);

    }
    Deepak Rai
    Varanasi

  13. 20

    Toto je krátky kód pre e-mailový výraz -

    funkcia validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    návrat emailPattern.test (id);

    }
    Deepak Rai
    Varanasi

  14. 21
  15. 22
  16. 23

    Ďakujeme, ale v tomto regulárnom výraze sa vyskytla chyba. Nie som odborník na regulárny výraz, ale skúsil som e-mail:

    test @ test

    a prešlo cez regulárny výraz ... všimol som si, že chýba únik z „.“ tak by to malo byť:

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

  17. 24
  18. 27

    Toto je iba hrubá kontrola, ale nie stopercentná, napríklad to by bolo v poriadku john_doe. @ gmail.com čo v skutočnosti nie je platná e-mailová adresa (bodka nie je povolená ako posledný znak v miestnej časti e-mailu).
    Tiež by to prijalo john...srnka@gmail.com čo je tiež neplatné, pretože v sekvencii nemôže byť viac ako jedna bodka.

    Je to iba niekoľko nedostatkov, ktoré som si všimol na prvý pohľad.
    Mojím zámerom nie je napadnúť len poukázať na to v prípade, že to niekto plánuje použiť ako bezpečnostnú kontrolu - nedostatočne zabezpečenú.

    Informácie o platných e-mailových adresách nájdete tu: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Vlastne si myslím, že pre bodku („.“) Musíte použiť únik. Vaša funkcia by teda mala byť namiesto toho:

    funkcia validateEmail (id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    návrat emailPattern.test (id);

    }

    V opačnom prípade by bodka znamenala „ľubovoľný znak“. Verím, že takýmto zvláštnym postavám treba uniknúť.

    S pozdravom,

    Federico

  20. 29

    function validateEmail (fld) {
    var error = ””;
    var tfld = trim (fld.value); // hodnota poľa s orezanými medzerami
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var legalChars = / [(),;: \ ”[]] /;

    if (fld.value == „Zadajte svoju e-mailovú adresu“) {

    error = “Prosím, zadajte svoju e-mailovú adresu.n”;
    } else if (! emailFilter.test (tfld)) {// otestovať e-mail na nelegálne znaky

    error = “Zadajte platnú e-mailovú adresu.n”;
    } else if (fld.value.match (legalChars)) {

    error = “Zadajte platnú e-mailovú adresu.n”;
    }
    chyba návratu;
    }

  21. 30

    function validateEmail (fld) {
    var error = ””;
    var tfld = trim (fld.value); // hodnota poľa s orezanými medzerami
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var legalChars = / [(),;: \ ”[]] /;

    if (fld.value == „Zadajte svoju e-mailovú adresu“) {

    error = “Prosím, zadajte svoju e-mailovú adresu.n”;
    } else if (! emailFilter.test (tfld)) {// otestovať e-mail na nelegálne znaky

    error = “Zadajte platnú e-mailovú adresu.n”;
    } else if (fld.value.match (legalChars)) {

    error = “Zadajte platnú e-mailovú adresu.n”;
    }
    chyba návratu;
    }

  22. 31

    function validateEmail (fld) {
    var error = ””;
    var tfld = trim (fld.value); // hodnota poľa s orezanými medzerami
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var legalChars = / [(),;: \ ”[]] /;

    if (fld.value == „Zadajte svoju e-mailovú adresu“) {

    error = “Prosím, zadajte svoju e-mailovú adresu.n”;
    } else if (! emailFilter.test (tfld)) {// otestovať e-mail na nelegálne znaky

    error = “Zadajte platnú e-mailovú adresu.n”;
    } else if (fld.value.match (legalChars)) {

    error = “Zadajte platnú e-mailovú adresu.n”;
    }
    chyba návratu;
    }

  23. 32

    function validateEmail (fld) {
    var error = ””;
    var tfld = trim (fld.value); // hodnota poľa s orezanými medzerami
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var legalChars = / [(),;: \ ”[]] /;

    if (fld.value == „Zadajte svoju e-mailovú adresu“) {

    error = “Prosím, zadajte svoju e-mailovú adresu.n”;
    } else if (! emailFilter.test (tfld)) {// otestovať e-mail na nelegálne znaky

    error = “Zadajte platnú e-mailovú adresu.n”;
    } else if (fld.value.match (legalChars)) {

    error = “Zadajte platnú e-mailovú adresu.n”;
    }
    chyba návratu;
    }

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

Čo si myslíte?

Táto stránka používa Akismet na zníženie spamu. Zistite, ako sa spracúvajú údaje vašich komentárov.