Tjek e-mail-adresse med JavaScript og regulære udtryk

For et stykke tid siden satte jeg en Password Strength Checker ved hjælp af JavaScript og regulære udtryk. På den samme note kan du også kontrollere strukturen på en e-mail-adresse ved hjælp af den samme regulære udtryk (regex) metode.

Hvis dit formularelement har id = ”e-mail-adresse” og du tilføjer en formular onSubmit = ”return checkEmail ();“, Dette er en Javascript-funktion, som du kan bruge til at returnere en advarsel, hvis e-mail-adressen har en gyldig struktur eller ej:

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

Funktionen validerer indholdet af e-mailen til filterets. Hvis sammenligningen mislykkes, popper den op en advarsel og returnerer fokus tilbage til e-mail-adressefeltet!

41 Kommentarer

  1. 1

    For formularer med flere e-mail-adresser, ville det være godt at gøre class = ”emailaddress”. Hvis du har prototype.js-biblioteket (http://www.prototypejs.org) inkluderet på siden kan du gøre noget som dette:

    var valid = true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. e-mail-adresse'). hver (funktion (e-mail) {
    hvis (! filter.test (email.value)) {
    alarm (? Angiv en gyldig e-mail-adresse?);
    e-mail. fokus;
    gyldig = falsk;
    }
    });
    returnering gyldig

  2. 5
  3. 7

    Jeg kan godt lide ideen, men jeg vil være tøvende med at vedtage netop dette regulære udtryk uden beskrivelse af, hvilke lovlige e-mail-adresser den ikke accepterer, og hvilke ulovlige adresser den tillader.

    For et eksempel på et regulært udtryk, der gør et anstændigt job sammen med en forklaring på, hvilke sager det ikke dækker, se dette:

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

    Min personlige præference er at dække de fleste af de enkle sager og udsende en advarsel for alt andet end at afvise det. Hvis Bob virkelig ønsker at indsende bob@com.museum snarere end bob@museum.com, hvorfor ikke lade ham?

    • 8

      Hej Reg,

      Du kan teste Regex ved hjælp af en Online Regex Tester.

      Der er også bestemt meget mere, der kan gøres, hvis du vil sikre en e-mail adresse er gyldig i overensstemmelse med RFC.

      Der er et par grunde til ikke at tillade nogen at indtaste en ugyldig e-mail-adresse:
      1. De bliver irriterede på dig, når den e-mail, de forventede ikke kommer igennem - uanset om det var din skyld, blev adressen indtastet forkert.
      2. Hvis com.museum var et gyldigt domæne, og lad os sige, Yahoo! betjente det - enhver e-mail-adresse, der hoppede, ville have en negativ indvirkning på din virksomheds ry for e-mail-levering. Dette kan føre til, at al din virksomheds e-mail bliver blokeret.
      3. Hvis din e-mail-udbyder tillod dig at komme ind bob@com.museum, ville du også betale for hver e-mail, der sendes til den e-mail-adresse, indtil de afmeldte den adresse på grund af afvisninger. Jeg vil undgå enhver ESP, der tillader en ugyldig e-mail-adresse sådan - de tager bare dine penge!

      Tak for at stoppe forbi!
      Doug

  4. 9
  5. 10

    Der er meget enklere måde at skrive udtrykket på:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Med den endelige modifikator / i er der ingen grund til at angive store bogstaver.
    - Jeg kender ikke nogen TLD med tal i.
    På en sidebemærkning tillader jeg TLD med op til 6 tegn; nye ankommer regelmæssigt, og du ved aldrig (godt, nogle fremtidige kan måske endda have tal i det, jeg ved).

  6. 11

    Hej der,

    Jeg prøver at bruge dette i en eksisterende form i realtid, men dette ser ikke ud til at valideres i realtid ligesom din adgangskontrolstyrkekontrol ...

    Eller er jeg bare så clueless, og det fungerer ikke for mig?

  7. 12

    btw, jeg kan virkelig godt lide det, du foregår her, dine tutorials er meget enkle, jeg vil helt sikkert bogmærke denne….

  8. 13
  9. 16
  10. 17

    Bare en lille korrektion: Det regulære udtryk har et ekstra () + i slutningen. Den skulle lyde:

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

    Med den første ville enhver lang længde accepteres (hvilket ikke er iboende forkert, som andre har påpeget, men hvis det var hensigten, kunne udtrykket forkortes).

  11. 18

    Kan du venligst forklare det regulære udtryk for denne kode, og hvordan den fungerer? Også om .test - Er .test en standarderklæring i javascript for at kontrollere ting som du gjorde i koden ovenfor?

  12. 19

    Dette er en kort kode til e-mail-udtryk-

    funktion validateEmail (id)
    {
    var emailPattern = /^ [aa-ZA-Z0-9._- ]+@ [aa-zA-Z0-9.- ]+. [aa-zA-Z] {2,4 $ /;
    returner emailPattern.test (id);

    }
    Deepak Rai
    Varanasi

  13. 20

    Dette er en kort kode til e-mail-udtryk-

    funktion validateEmail (id)
    {
    var emailPattern = /^ [aa-ZA-Z0-9._- ]+@ [aa-zA-Z0-9.- ]+. [aa-zA-Z] {2,4 $ /;
    returner emailPattern.test (id);

    }
    Deepak Rai
    Varanasi

  14. 21
  15. 22
  16. 23

    Tak, men der er en fejl i denne regex. Jeg er ikke en regex-ekspert, men jeg prøvede e-mail:

    test @ test

    og det passerede regex ... Jeg bemærkede, at det mangler at undslippe "." sådan skal det være:

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

  17. 24
  18. 27

    Nå, dette er bare en grov kontrol, men ikke 100% nøjagtig, for eksempel ville dette være okay med john_doe. @ gmail.com hvilket faktisk ikke er en gyldig e-mail-adresse (punktum er ikke tilladt som sidste tegn i lokal del af e-mail).
    Også det ville acceptere john…doe@gmail.com hvilket også er ugyldigt, da der ikke kan være mere end en prik i en sekvens.

    Dette er blot nogle fejl, jeg bemærkede ved første øjekast.
    Min hensigt er ikke at basere bare for at påpege dette, hvis nogen planlægger at bruge dette som sikkerhedskontrol - ikke sikkert nok.

    For information om gyldige e-mail-adresser, se dette: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Faktisk tror jeg, du skal bruge en flugt til prikken (“.”). Så din funktion skal i stedet være:

    funktion validateEmail (id)
    {
    var emailPattern = /^ [aa-ZA-Z0-9._- ]+@ [aa-zA-Z0-9.- ]+. [aa-zA-Z] {2,4 $ /;
    returner emailPattern.test (id);

    }

    Ellers ville prikken betyde "enhver karakter". Jeg tror, ​​at sådanne specialtegn skal undslippes.

    Hilsen,

    Federico

  20. 29

    funktion validateEmail (fld) {
    var fejl = ””;
    var tfld = trim (fld.værdi); // værdi af felt med hvidt mellemrum trimmet fra
    var emailFilter = /^ [^ @] + @ [^^.] +. [^@] *ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    hvis (fld.value == “Indtast din e-mail-adresse”) {

    error = “Indtast venligst din e-mail-adresse. n”;
    } ellers hvis (! emailFilter.test (tfld)) {// test e-mail for ulovlige tegn

    error = “Indtast venligst en gyldig e-mail-adresse. n”;
    } ellers hvis (fld.value.match (illegalChars)) {

    error = “Indtast venligst en gyldig e-mail-adresse. n”;
    }
    returfejl
    }

  21. 30

    funktion validateEmail (fld) {
    var fejl = ””;
    var tfld = trim (fld.værdi); // værdi af felt med hvidt mellemrum trimmet fra
    var emailFilter = /^ [^ @] + @ [^^.] +. [^@] *ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    hvis (fld.value == “Indtast din e-mail-adresse”) {

    error = “Indtast venligst din e-mail-adresse. n”;
    } ellers hvis (! emailFilter.test (tfld)) {// test e-mail for ulovlige tegn

    error = “Indtast venligst en gyldig e-mail-adresse. n”;
    } ellers hvis (fld.value.match (illegalChars)) {

    error = “Indtast venligst en gyldig e-mail-adresse. n”;
    }
    returfejl
    }

  22. 31

    funktion validateEmail (fld) {
    var fejl = ””;
    var tfld = trim (fld.værdi); // værdi af felt med hvidt mellemrum trimmet fra
    var emailFilter = /^ [^ @] + @ [^^.] +. [^@] *ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    hvis (fld.value == “Indtast din e-mail-adresse”) {

    error = “Indtast venligst din e-mail-adresse. n”;
    } ellers hvis (! emailFilter.test (tfld)) {// test e-mail for ulovlige tegn

    error = “Indtast venligst en gyldig e-mail-adresse. n”;
    } ellers hvis (fld.value.match (illegalChars)) {

    error = “Indtast venligst en gyldig e-mail-adresse. n”;
    }
    returfejl
    }

  23. 32

    funktion validateEmail (fld) {
    var fejl = ””;
    var tfld = trim (fld.værdi); // værdi af felt med hvidt mellemrum trimmet fra
    var emailFilter = /^ [^ @] + @ [^^.] +. [^@] *ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    hvis (fld.value == “Indtast din e-mail-adresse”) {

    error = “Indtast venligst din e-mail-adresse. n”;
    } ellers hvis (! emailFilter.test (tfld)) {// test e-mail for ulovlige tegn

    error = “Indtast venligst en gyldig e-mail-adresse. n”;
    } ellers hvis (fld.value.match (illegalChars)) {

    error = “Indtast venligst en gyldig e-mail-adresse. n”;
    }
    returfejl
    }

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

Hvad mener du?

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.