Patikrinkite el. Pašto adresą naudodami „JavaScript“ ir įprastus posakius

Prieš kurį laiką uždėjau a Slaptažodžio stiprumo tikrintuvas naudojant „JavaScript“ ir reguliarius posakius. Toje pačioje pastaboje taip pat galite patikrinti el. Pašto adreso struktūrą naudodami tą pačią reguliaraus reiškinio (regex) metodiką.

Jei jūsų formos elementas turi id = ”el. pašto adresas” ir pridedate formą onSubmit = ”return checkEmail ();“, Tai yra„ Javascript “funkcija, kuria galite pasinaudoti norėdami grąžinti įspėjimą, jei el. Pašto adreso struktūra yra tinkama:

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 patikrina el. Laiško ir filtro turinį. Jei palyginimas nepavyksta, jis pasirodo įspėjimu ir vėl nukreipia dėmesį į el. Pašto adreso lauką!

41 komentarai

  1. 1

    Formoms su keliais el. pašto adresais būtų naudinga atlikti class=”emailaddress”. Jei turite prototype.js biblioteką (http://www.prototypejs.org) įtrauktas į puslapį, galite padaryti kažką panašaus:

    var galioja = tiesa;
    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)) {
    alert(?Pateikite galiojantį el. pašto adresą?);
    email.focus;
    galioja = false;
    }
    });
    grąžinimas galioja;

  2. 5
  3. 7

    Idėja man patinka, bet aš nedvejočiau, ar priimti šį konkretų reguliarųjį posakį, neaprašydamas, kurių legalių el. pašto adresų ji nepriima ir kuriuos nelegalius adresus leidžia.

    Reguliariosios išraiškos, kuri atlieka tinkamą darbą, pavyzdį ir paaiškinimą, kurių atvejų ji neapima, žr.

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

    Mano asmeninis pasirinkimas yra apimti daugumą paprastų atvejų ir paskelbti įspėjimą dėl viso kito, o ne atmesti. Jei Bobas tikrai nori pateikti bob@com.museum , o ne bob@museum.com, kodėl jam neleidus?

    • 8

      Sveiki Reg,

      Galite išbandyti Regex naudodami Internetinis Regex testeris.

      Be to, tikrai yra daug daugiau, ką galima padaryti, jei norite užtikrinti elektroninio pašto adresas galioja pagal RFC.

      Yra keletas priežasčių, kodėl negalima leisti kam nors įvesti neteisingo el. pašto adreso:
      1. Jie supyks ant jūsų, kai el. laiškas, kurio jie tikėjosi, nepasieks – nesvarbu, ar dėl jūsų kaltės, adresas buvo įvestas neteisingai.
      2. Jei com.museum buvo galiojantis domenas ir, tarkime, Yahoo! naudojo jį – bet koks atšokęs el. pašto adresas turėtų neigiamos įtakos jūsų įmonės el. pašto pristatymo reputacijai. Dėl to gali būti užblokuotas visas jūsų įmonės el. paštas.
      3. Jei jūsų el. pašto paslaugų teikėjas leido jums įvesti bob@com.museum, taip pat mokėsite už kiekvieną el. laišką, išsiųstą tuo el. pašto adresu, kol jie atšauks šio adreso prenumeratą dėl atmetimų. Vengčiau bet kokio ESP, leidžiančio tokį neteisingą el. pašto adresą – jie tiesiog atima jūsų pinigus!

      Ačiū, kad sustojote!
      Doug

  4. 9
  5. 10

    Yra daug paprastesnis būdas parašyti išraišką:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    – Naudojant galutinį modifikatorių /i nereikia nurodyti didžiųjų raidžių diapazono.
    – Nežinau nė vieno ALD su skaičiais.
    Beje, aš leidžiu ALD su iki 6 simbolių; Nauji atkeliauja reguliariai ir niekada negali žinoti (na, kai kuriuose būsimuose gali būti net numeriai, aš žinau).

  6. 11

    Sveiki,

    Bandau tai naudoti esama forma realiuoju laiku, bet neatrodo, kad tai patvirtinama realiuoju laiku, kaip jūsų slaptažodžio stiprumo tikrintuvas...

    Arba aš tiesiog nesuprantu, ir man tai netinka?

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

    Tik nedidelis pataisymas: reguliariosios išraiškos pabaigoje yra papildomas ()+. Turėtų būti parašyta:

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

    Su pirmuoju būtų priimti bet kokio ilgio ALD (tai nėra iš esmės neteisinga, kaip nurodė kiti, bet jei tai buvo tikslas, išraiška gali būti sutrumpinta).

  11. 18

    Ar galite paaiškinti šio kodo reguliariąją išraišką ir jos veikimą? Taip pat apie .test – ar .test yra numatytasis „Javascript“ teiginys, skirtas patikrinti tokius dalykus, kaip anksčiau pateiktame kode?

  12. 19
  13. 20

    Tai trumpas kodas el.

    funkcija valideEmail(id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    grąžinti emailPattern.test(id);

    }
    Deepak Rai
    Varanasi

  14. 21
  15. 22
  16. 23

    Ačiū, bet šiame reguliariajame reiškinyje yra klaida. Nesu reguliariųjų reiškinių ekspertas, bet išbandžiau el. paštą:

    testas@testas

    ir jis išlaikė reguliarųjį reiškinį... Pastebėjau, kad trūksta "." taip turi buti:

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

  17. 24
  18. 27

    Na, tai tik apytikslis patikrinimas, bet ne 100% tikslus, pavyzdžiui, tai būtų gerai john_doe.@gmail.com kuris iš tikrųjų nėra galiojantis el. pašto adresas (taškas neleidžiamas kaip paskutinis simbolis vietinėje el. pašto dalyje).
    Taip pat priimtų john…doe@gmail.com kuris taip pat negalioja, nes sekoje negali būti daugiau nei vienas taškas.

    Tai tik keli trūkumai, kuriuos pastebėjau iš pirmo žvilgsnio.
    Neketinu piktintis tik tuo atveju, jei kas nors planuoja tai naudoti kaip saugumo patikrą – nepakankamai saugus.

    Daugiau informacijos apie galiojančius el. pašto adresus rasite čia: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Tiesą sakant, manau, kad taškui („.“) reikia taikyti pabėgimo klavišą. Taigi, jūsų funkcija turėtų būti:

    funkcija valideEmail(id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    grąžinti emailPattern.test(id);

    }

    Priešingu atveju taškas reikštų „bet kokį simbolį“. Manau, kad reikia pabėgti nuo tokių ypatingų veikėjų.

    Pagarbiai,

    Federico

  20. 29

    function valideEmail(fld) {
    var error=””;
    var tfld = trim(fld.value); // lauko vertė su iškirptais tarpais
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == "Įveskite savo el. pašto adresą") {

    error = "Įveskite savo el. pašto adresą.n";
    } else if (!emailFilter.test(tfld)) { //neleistinų simbolių tikrinimas el.

    error = "Įveskite galiojantį el. pašto adresą.n";
    } else if (fld.value.match(illegalChars)) {

    error = "Įveskite galiojantį el. pašto adresą.n";
    }
    grąžinimo klaida;
    }

  21. 30

    function valideEmail(fld) {
    var error=””;
    var tfld = trim(fld.value); // lauko vertė su iškirptais tarpais
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == "Įveskite savo el. pašto adresą") {

    error = "Įveskite savo el. pašto adresą.n";
    } else if (!emailFilter.test(tfld)) { //neleistinų simbolių tikrinimas el.

    error = "Įveskite galiojantį el. pašto adresą.n";
    } else if (fld.value.match(illegalChars)) {

    error = "Įveskite galiojantį el. pašto adresą.n";
    }
    grąžinimo klaida;
    }

  22. 31

    function valideEmail(fld) {
    var error=””;
    var tfld = trim(fld.value); // lauko vertė su iškirptais tarpais
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == "Įveskite savo el. pašto adresą") {

    error = "Įveskite savo el. pašto adresą.n";
    } else if (!emailFilter.test(tfld)) { //neleistinų simbolių tikrinimas el.

    error = "Įveskite galiojantį el. pašto adresą.n";
    } else if (fld.value.match(illegalChars)) {

    error = "Įveskite galiojantį el. pašto adresą.n";
    }
    grąžinimo klaida;
    }

  23. 32

    function valideEmail(fld) {
    var error=””;
    var tfld = trim(fld.value); // lauko vertė su iškirptais tarpais
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == "Įveskite savo el. pašto adresą") {

    error = "Įveskite savo el. pašto adresą.n";
    } else if (!emailFilter.test(tfld)) { //neleistinų simbolių tikrinimas el.

    error = "Įveskite galiojantį el. pašto adresą.n";
    } else if (fld.value.match(illegalChars)) {

    error = "Įveskite galiojantį el. pašto adresą.n";
    }
    grąžinimo klaida;
    }

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

Ką manote?

Ši svetainė naudoja "Akismet", kad sumažintų šlamštą. Sužinokite, kaip apdorojamas jūsų komentaras.