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ų gerai atlikti class = ”emailaddress”. Jei turite biblioteką prototype.js (http://www.prototypejs.org), įtrauktą į puslapį, galite padaryti maždaug taip:

    var valid = true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). kiekvienas (funkcija (el. paštas) {
    jei (! filter.test (email.value)) {
    įspėjimas (? Nurodykite galiojantį el. pašto adresą?);
    paštas.dėmesys;
    galiojantis = klaidingas;
    }
    });
    grąža galioja;

  2. 5
  3. 7

    Man ši idėja patinka, bet aš nesiryžčiau naudoti šio konkretaus posakio, neaprašydamas, kokių legalių el. Pašto adresų jis nepriima ir kuriuos neteisėtus adresus leidžia.

    Reguliaraus posakio, kuris padaro deramą darbą, pavyzdį kartu su paaiškinimu, kurių atvejų jis neapima, žr. Tai:

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

    Asmeniškai norėčiau aptarti daugumą paprastų atvejų ir pateikti įspėjimą dėl viso kito, o ne jį 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 galite padaryti daug daugiau, jei norite užtikrinti elektroninio pašto adresas galioja pagal RFC.

      Yra keletas priežasčių neleisti kam nors įvesti neteisingo el. Pašto adreso:
      1. Jie tave erzins, kai el. Laiškas, kurio tikėjosi, nepateks - nepaisant to, ar dėl tavo kaltės adresas buvo įvestas neteisingai.
      2. Jei „com.museum“ buvo galiojantis domenas ir, tarkime, „Yahoo! ją valdė - bet koks atšokęs el. pašto adresas turėtų neigiamos įtakos jūsų įmonės reputacijai pristatant el. laišką. 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, jūs taip pat mokėtumėte už kiekvieną el. laišką, išsiųstą tuo el. pašto adresu, kol jie atšaukė šį adresą dėl atšokimų. Norėčiau išvengti bet kokio ESP, kuris leistų naudoti netinkamą el. Pašto adresą - jie tiesiog ima 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.
    - Aš tokių nepažįstu ALD su skaičiais.
    Pažymėtina, kad aš leidžiu TLD iki 6 simbolių; nauji atvyksta reguliariai ir niekada negali žinoti (na, somme būsimieji netgi gali turėti skaičių, aš žinau).

  6. 11

    Sveiki,

    Aš stengiuosi tai naudoti esama forma realiuoju laiku, bet neatrodo, kad tai tikrinama realiuoju laiku, pavyzdžiui, jūsų slaptažodžio stiprumo tikrintuvas ...

    Arba aš tik tokia beprasmiška ir tai man neveikia?

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

    Tik nedidelis pataisymas: Reguliariosios išraiškos pabaigoje yra papildoma () +. Jis turėtų būti toks:

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

    Su pirmuoju būtų priimami bet kokio ilgio ALD (kas nėra savaime klaidinga, kaip pabrėžė kiti, tačiau jei tai buvo ketinimas, išraišką galima sutrumpinti).

  11. 18

    Ar galėtumėte paaiškinti reguliarią šio kodo išraišką ir kaip jis veikia? Taip pat apie .test - Ar .test yra numatytasis teiginys „javascript“, kad patikrintumėte tai, ką darėte aukščiau esančiame kode?

  12. 19
  13. 20

    Tai trumpas el. Pašto išraiškos kodas

    funkcija validateEmail (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 regexe yra klaida. Nesu regex ekspertas, bet bandžiau el. Paštą:

    testas @ testas

    ir jis praėjo regex'ą ... Aš pastebėjau, kad jam trūksta pabėgti nuo taip turėtų būti:

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

  17. 24
  18. 27

    Na, tai tik apytikris 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 (vietinėje el. pašto dalyje taškas neleidžiamas kaip paskutinis simbolis).
    Taip pat tai sutiktų john ... doe@gmail.com kuris taip pat negalioja, nes eilėje negali būti daugiau nei vienas taškas.

    Tai tik keletas trūkumų, kuriuos pastebėjau iš pirmo žvilgsnio.
    Mano ketinimas neslėpti vien tam, kad atkreipčiau dėmesį į tai, jei kas nors planuoja tai naudoti kaip saugumo patikrą - nėra pakankamai saugus.

    Norėdami sužinoti daugiau apie galiojančius el. Pašto adresus, apsilankykite: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Tiesą sakant, manau, kad taškui („.“) Reikia pritaikyti pabėgimą. Taigi, jūsų funkcija turėtų būti:

    funkcija validateEmail (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 tokių specialių personažų reikia išvengti.

    Pagarbiai,

    Federico

  20. 29

    funkcija validateEmail (fld) {
    var klaida = ””;
    var tfld = apdaila (fld.value); // lauko su apkirptu tarpu vertė
    var emailFilter = /^[^@]+@[^@.]+. [^@]*ww$/;
    varegalChars = / [(),;: \ ”[]] /;

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

    error = „Įveskite savo el. pašto adresą.n“;
    } else if (! emailFilter.test (tfld)) {// patikrinkite, ar el. laiške nėra neteisėtų simbolių

    error = „Įveskite galiojantį el. pašto adresą.n“;
    } else if (fld.value.match (neteisėtasChars)) {

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

  21. 30

    funkcija validateEmail (fld) {
    var klaida = ””;
    var tfld = apdaila (fld.value); // lauko su apkirptu tarpu vertė
    var emailFilter = /^[^@]+@[^@.]+. [^@]*ww$/;
    varegalChars = / [(),;: \ ”[]] /;

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

    error = „Įveskite savo el. pašto adresą.n“;
    } else if (! emailFilter.test (tfld)) {// patikrinkite, ar el. laiške nėra neteisėtų simbolių

    error = „Įveskite galiojantį el. pašto adresą.n“;
    } else if (fld.value.match (neteisėtasChars)) {

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

  22. 31

    funkcija validateEmail (fld) {
    var klaida = ””;
    var tfld = apdaila (fld.value); // lauko su apkirptu tarpu vertė
    var emailFilter = /^[^@]+@[^@.]+. [^@]*ww$/;
    varegalChars = / [(),;: \ ”[]] /;

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

    error = „Įveskite savo el. pašto adresą.n“;
    } else if (! emailFilter.test (tfld)) {// patikrinkite, ar el. laiške nėra neteisėtų simbolių

    error = „Įveskite galiojantį el. pašto adresą.n“;
    } else if (fld.value.match (neteisėtasChars)) {

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

  23. 32

    funkcija validateEmail (fld) {
    var klaida = ””;
    var tfld = apdaila (fld.value); // lauko su apkirptu tarpu vertė
    var emailFilter = /^[^@]+@[^@.]+. [^@]*ww$/;
    varegalChars = / [(),;: \ ”[]] /;

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

    error = „Įveskite savo el. pašto adresą.n“;
    } else if (! emailFilter.test (tfld)) {// patikrinkite, ar el. laiške nėra neteisėtų simbolių

    error = „Įveskite galiojantį el. pašto adresą.n“;
    } else if (fld.value.match (neteisėtasChars)) {

    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.