Pārbaudiet e-pasta adresi ar JavaScript un parastajām izteiksmēm

Pirms kāda laika es uzliku a Paroles stipruma pārbaudītājs, izmantojot JavaScript un regulārās izteiksmes. Tajā pašā piezīmē varat pārbaudīt arī e-pasta adreses struktūru, izmantojot to pašu regulārās izteiksmes (regex) metodiku.

Ja jūsu formas elementam ir id = ”e-pasta adrese” un jūs pievienojat veidlapu onSubmit = ”return checkEmail ();“, Tā ir Javascript funkcija, kuru varat izmantot, lai atgrieztu brīdinājumu, ja e-pasta adresei ir derīga struktūra:

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

Funkcija apstiprina e-pasta saturu ar filtru. Ja salīdzinājums neizdodas, tas uznirst brīdinājumu un atgriežas atpakaļ e-pasta adreses laukā!

41 Komentāri

  1. 1

    Veidlapām ar vairākām e-pasta adresēm būtu labi izdarīt class = ”emailaddress”. Ja jums ir bibliotēka prototype.js (http://www.prototypejs.org), kas iekļauta lapā, varat rīkoties šādi:

    var valid = true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). katrs (funkcija (e-pasts) {
    ja (! filter.test (email.value)) {
    brīdinājums (? Lūdzu, norādiet derīgu e-pasta adresi?);
    email.focus;
    derīgs = nepatiess;
    }
    });
    atgriešanās derīga;

  2. 5
  3. 7

    Man šī ideja patīk, taču es vilcinātos pieņemt šo konkrēto regulāro izteicienu, neaprakstot, kuras juridiskās e-pasta adreses tā nepieņem un kuras nelikumīgas adreses atļauj.

    Regulāras izteiksmes piemēru, kas veic pienācīgu darbu, kā arī skaidrojumu par gadījumiem, uz kuriem tas neattiecas, skatiet šo:

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

    Mana personīgā izvēle ir aptvert lielāko daļu vienkāršo gadījumu un brīdināt par visu pārējo, nevis noraidīt. Ja Bobs patiešām vēlas iesniegt iesniegumu bob@com.museum nevis bob@museum.com, kāpēc gan neļaut viņam?

    • 8

      Sveiks, reg.

      Jūs varat pārbaudīt Regex, izmantojot Tiešsaistes regex testeris.

      Turklāt noteikti var izdarīt vēl daudz, ja vēlaties nodrošināt e-pasta adrese ir derīga saskaņā ar RFC.

      Ir daži iemesli, kāpēc neļaut kādam ievadīt nederīgu e-pasta adresi:
      1. Viņi tevi kaitinās, kad gaidītais e-pasts netiks cauri - neatkarīgi no tā, vai adrese tika ievadīta nepareizi, vai ne jūs.
      2. Ja com.museum bija derīgs domēns un, teiksim, Yahoo! to vadīja - jebkura e-pasta adrese, kas atlēca, negatīvi ietekmēs jūsu uzņēmuma reputāciju attiecībā uz e-pasta piegādi. Tas var izraisīt visu jūsu uzņēmuma e-pasta ziņojumu bloķēšanu.
      3. Ja jūsu e-pasta pakalpojumu sniedzējs ļāva jums ievadīt bob@com.museum, jūs maksājat arī par katru e-pastu, kas nosūtīts uz šo e-pasta adresi, līdz viņi atteicās no šīs adreses atlēcienu dēļ. Es izvairītos no jebkāda ESP, kas ļautu nederīgu e-pasta adresi - viņi tikai paņem jūsu naudu!

      Paldies, ka pārtraucāt!
      Doug

  4. 9
  5. 10

    Izteiksmes uzrakstīšana ir daudz vienkāršāka:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Ar pēdējo modifikatoru / i nav nepieciešams norādīt lielo burtu diapazonu.
    - Es nezinu nevienu TLD ar cipariem tajā.
    Sānu piezīmē es atļauju TLD ar līdz 6 rakstzīmēm; jauni ierodas regulāri, un jūs nekad nevarat zināt (labi, somme nākamajiem var būt pat skaitļi, es zinu).

  6. 11

    Hi tur,

    Es mēģinu to izmantot esošā formā reāllaikā, taču tas, šķiet, netiek apstiprināts reāllaikā, piemēram, jūsu paroles stipruma pārbaudītājs ...

    Vai arī es esmu tik bezjēdzīgs, un tas man nedarbojas?

  7. 12

    BTW, man ļoti patīk tas, ko jūs šeit darāt, jūsu apmācības ir ļoti vienkāršas, es noteikti atzīmēšu šo vienu.

  8. 13
  9. 16
  10. 17

    Tikai neliels labojums: regulārās izteiksmes beigās ir papildus () +. Tam vajadzētu būt šādam:

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

    Pirmajā vietā tiktu pieņemti jebkura garuma TLD (kas nav iekšēji nepareizi, kā norādījuši citi, bet, ja tas bija nodoms, izteiksmi varēja saīsināt).

  11. 18

    Vai varat, lūdzu, paskaidrot šī koda regulāro izteiksmi un kā tas darbojas? Arī par .test - vai .test ir noklusējuma paziņojums javascript, lai pārbaudītu tādas lietas kā jūs to izdarījāt iepriekš minētajā kodā?

  12. 19
  13. 20
  14. 21
  15. 22
  16. 23

    Paldies, taču šajā regulārajā izteiksmē ir kļūda. Es neesmu regex eksperts, bet es mēģināju e-pastu:

    tests @ tests

    un tas izturēja regulāro paņēmienu ... Es pamanīju, ka tam trūkst iespēju izvairīties no “.” tāpēc tam vajadzētu būt:

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

  17. 24
  18. 27

    Nu, šī ir tikai aptuvena pārbaude, bet ne 100% precīza, piemēram, tas būtu labi john_doe. @ gmail.com kas patiesībā nav derīga e-pasta adrese (punkts nav atļauts kā pēdējā rakstzīme e-pasta vietējā daļā).
    Arī tas pieņemtu john ... doe@gmail.com kas arī nav derīgs, jo secībā nevar būt vairāk par vienu punktu.

    Šie ir tikai daži trūkumi, kurus pamanīju no pirmā acu skatiena.
    Mans nodoms nav pazemoties tikai tāpēc, lai to norādītu, ja kāds to plāno izmantot kā drošības pārbaudi - nav pietiekami drošs.

    Lai iegūtu informāciju par derīgām e-pasta adresēm, pārbaudiet šo: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Patiesībā, es domāju, ka jums jāpielieto punkts (“.”). Tātad jūsu funkcijai vajadzētu būt tā vietā:

    funkcija validateEmail (id)
    {
    var emailPattern = /^ elus-
    atgriezties emailPattern.test (id);

    }

    Pretējā gadījumā punkts nozīmētu “jebkuru rakstzīmi”. Es uzskatu, ka no šādiem īpašajiem varoņiem ir jāizbēg.

    Sveicieni,

    Federiko

  20. 29

    funkcija validateEmail (fld) {
    var kļūda = ””;
    var tfld = apdare (fld.value); // lauka vērtība, kas atstarpēta
    var emailFilter = /^[^@]+@[^@.]+. [^@]*ww$/;
    var nelikumīgsChars = / [(),;: \ ”[]] /;

    if (fld.value == “Ievadiet savu e-pasta adresi”) {

    error = “Lūdzu, ievadiet savu e-pasta adresi.n”;
    } else if (! emailFilter.test (tfld)) {// pārbaudīt, vai e-pastā nav nelegālu rakstzīmju

    error = “Lūdzu, ievadiet derīgu e-pasta adresi.n”;
    } else if (fld.value.match (egalChars)) {

    error = “Lūdzu, ievadiet derīgu e-pasta adresi.n”;
    }
    atgriešanās kļūda;
    }

  21. 30

    funkcija validateEmail (fld) {
    var kļūda = ””;
    var tfld = apdare (fld.value); // lauka vērtība, kas atstarpēta
    var emailFilter = /^[^@]+@[^@.]+. [^@]*ww$/;
    var nelikumīgsChars = / [(),;: \ ”[]] /;

    if (fld.value == “Ievadiet savu e-pasta adresi”) {

    error = “Lūdzu, ievadiet savu e-pasta adresi.n”;
    } else if (! emailFilter.test (tfld)) {// pārbaudīt, vai e-pastā nav nelegālu rakstzīmju

    error = “Lūdzu, ievadiet derīgu e-pasta adresi.n”;
    } else if (fld.value.match (egalChars)) {

    error = “Lūdzu, ievadiet derīgu e-pasta adresi.n”;
    }
    atgriešanās kļūda;
    }

  22. 31

    funkcija validateEmail (fld) {
    var kļūda = ””;
    var tfld = apdare (fld.value); // lauka vērtība, kas atstarpēta
    var emailFilter = /^[^@]+@[^@.]+. [^@]*ww$/;
    var nelikumīgsChars = / [(),;: \ ”[]] /;

    if (fld.value == “Ievadiet savu e-pasta adresi”) {

    error = “Lūdzu, ievadiet savu e-pasta adresi.n”;
    } else if (! emailFilter.test (tfld)) {// pārbaudīt, vai e-pastā nav nelegālu rakstzīmju

    error = “Lūdzu, ievadiet derīgu e-pasta adresi.n”;
    } else if (fld.value.match (egalChars)) {

    error = “Lūdzu, ievadiet derīgu e-pasta adresi.n”;
    }
    atgriešanās kļūda;
    }

  23. 32

    funkcija validateEmail (fld) {
    var kļūda = ””;
    var tfld = apdare (fld.value); // lauka vērtība, kas atstarpēta
    var emailFilter = /^[^@]+@[^@.]+. [^@]*ww$/;
    var nelikumīgsChars = / [(),;: \ ”[]] /;

    if (fld.value == “Ievadiet savu e-pasta adresi”) {

    error = “Lūdzu, ievadiet savu e-pasta adresi.n”;
    } else if (! emailFilter.test (tfld)) {// pārbaudīt, vai e-pastā nav nelegālu rakstzīmju

    error = “Lūdzu, ievadiet derīgu e-pasta adresi.n”;
    } else if (fld.value.match (egalChars)) {

    error = “Lūdzu, ievadiet derīgu e-pasta adresi.n”;
    }
    atgriešanās kļūda;
    }

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

Ko jūs domājat?

Šī vietne izmanto Akismet, lai samazinātu surogātpastu. Uzziniet, kā tiek apstrādāts jūsu komentārs.