Kontroleer e-posadres met JavaScript en gewone uitdrukkings

'N Ruk gelede sit ek 'n Wagwoordsterktekontroleerder met JavaScript en gewone uitdrukkings. Op dieselfde noot kan u ook die struktuur van 'n e-posadres nagaan met behulp van dieselfde metodiek vir reguliere uitdrukking (regex).

As u vormelement die id = ”e-posadres” en jy voeg 'n vorm by onSubmit = ”return checkEmail ();“, Dit is 'n Javascript-funksie wat u kan gebruik om 'n waarskuwing terug te stuur as die e-posadres 'n geldige struktuur het of 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;
}
}

Die funksie valideer die inhoud van die e-pos na die filter. As die vergelyking misluk, verskyn 'n waarskuwing en gee die fokus terug na die e-posadresveld!

41 Comments

  1. 1

    Vir vorms met veelvuldige e-posadresse, sal dit goed wees om class = "emailaddress" te doen. As u die prototype.js-biblioteek het (http://www.prototypejs.org) op die bladsy ingesluit, kan u so iets doen:

    var geldig = waar;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. e-posadres'). elk (funksie (e-pos) {
    as (! filter.test (email.value)) {
    waarskuwing (? Verskaf asseblief 'n geldige e-posadres?);
    e-pos.fokus;
    geldig = onwaar;
    }
    });
    opgawe geldig;

  2. 5
  3. 7

    Ek hou van die idee, maar ek sou huiwer om hierdie spesifieke uitdrukking aan te neem sonder om te beskryf watter wettige e-posadresse dit nie aanvaar nie en watter onwettige adresse dit toelaat.

    Vir 'n voorbeeld van 'n reëlmatige uitdrukking wat ordentlike werk verrig, tesame met 'n uiteensetting van die gevalle wat dit nie dek nie, sien u hierdie:

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

    My persoonlike voorkeur is om die meeste eenvoudige sake te dek en 'n waarskuwing uit te reik vir alles anders as om dit te verwerp. As Bob regtig wil ingee bob@com.museum eerder as bob@museum.com, waarom laat hy hom nie toe nie?

    • 8

      Hallo Reg,

      U kan die Regex toets met behulp van 'n Aanlyn Regex-toetser.

      Daar is beslis baie meer wat u kan doen as u 'n e-pos adres is geldig in ooreenstemming met die RFC.

      Daar is 'n paar redes om nie toe te laat dat iemand 'n ongeldige e-posadres invoer nie:
      1. Hulle sal jou ergerlik maak as die e-pos wat hulle verwag nie deurkom nie - ongeag of dit jou skuld is of nie, die adres is verkeerd ingevoer.
      2. As com.museum 'n geldige domein was en, laat ons sê, Yahoo! dit bestuur - enige e-posadres wat teruggespring het, sal 'n negatiewe impak hê op die reputasie van u maatskappy vir aflewering van e-pos. Dit kan daartoe lei dat al u e-posadres van u onderneming geblokkeer word.
      3. As u e-posdiensverskaffer u toelaat om in te gaan bob@com.museum, betaal u ook vir elke e-pos wat na daardie e-posadres gestuur word totdat hulle daardie adres uitgetrek het weens weiering. Ek sal wegkom van enige ESP wat so 'n ongeldige e-posadres toelaat - hulle neem net u geld!

      Dankie dat jy opgehou het!
      Doug

  4. 9
  5. 10

    Daar is 'n baie eenvoudiger manier om die uitdrukking te skryf:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Met die finale wysiger / i hoef u nie die hoofletterreeks aan te dui nie.
    - Ek weet niks daarvan nie TLD met syfers daarin.
    Op 'n kanttekening laat ek TLD toe met tot 6 karakters; daar kom gereeld nuwes aan en jy weet nooit (wel, sommige toekomstige mense kan selfs getalle bevat, weet ek).

  6. 11

    Hi daar,

    Ek is van plan om dit in 'n bestaande vorm in real-time te gebruik, maar dit lyk nie of dit in realtime geldig is soos u wagwoordsterkte-kontroleur nie ...

    Of is ek net so idee, en dit werk nie vir my nie?

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

    Net 'n klein regstelling: die gewone uitdrukking het 'n ekstra () + aan die einde. Dit moet lees:

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

    By die eerste een sou enige lang-TLD's aanvaar word (wat nie intrinsekaal verkeerd is soos ander opgemerk het nie, maar as dit die bedoeling was, kan die uitdrukking verkort word).

  11. 18

    Kan u asseblief die reëlmatige uitdrukking van hierdie kode verduidelik en hoe dit werk? Ook oor .test - Is .test 'n verstekverklaring in javascript om dinge soos u in die kode hierbo gedoen het, na te gaan?

  12. 19

    Dit is 'n kort kode vir e-posuitdrukking-

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

    }
    Deepak Rai
    Varanasi

  13. 20

    Dit is 'n kort kode vir e-posuitdrukking-

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

    }
    Deepak Rai
    Varanasi

  14. 21
  15. 22
  16. 23

    Dankie, maar daar is 'n fout in hierdie regex. Ek is nie 'n regex-kenner nie, maar ek het e-pos probeer:

    toets @ toets

    en dit het die regex verbygesteek ... Ek het opgemerk dat dit die "." so moet dit wees:

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

  17. 24
  18. 27

    Wel, dit is net 'n growwe tjek, maar nie 100% akkuraat nie, byvoorbeeld, dit sal goed wees met john_doe. @ gmail.com wat eintlik nie 'n geldige e-posadres is nie (punt is nie toegelaat as laaste karakter in die plaaslike deel van die e-pos nie).
    Dit sou ook aanvaar john…doe@gmail.com wat ook ongeldig is, aangesien daar nie meer as een punt in 'n ry kan wees nie.

    Dit is net 'n paar foute wat ek met die eerste oogopslag opgemerk het.
    My bedoeling is nie om net daarop te wys as iemand van plan is om dit as 'n sekuriteitstoets te gebruik nie, nie veilig genoeg nie.

    Vir meer inligting oor geldige e-posadresse, kyk hierna: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Eintlik dink ek dat u 'n ontvlugting vir die punt (".") Moet toepas. U funksie moet dus wees:

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

    }

    Andersins beteken die punt 'enige karakter'. Ek glo dat sulke spesiale karakters ontsnap moet word.

    Groete,

    Federico

  20. 29

    funksie validateEmail (fld) {
    var fout = ””;
    var tfld = trim (fld.value); // waarde van veld met wit spasie afgesny
    var emailFilter = /^ [^ @] + @ [^^.] +. [^^] ]ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == "Voer u e-posadres in") {

    error = “Voer asseblief u e-posadres in. n”;
    } anders as (! emailFilter.test (tfld)) {// toets e-pos vir onwettige karakters

    error = “Voer asseblief 'n geldige e-posadres in. n”;
    } anders as (fld.value.match (illegalChars)) {

    error = “Voer asseblief 'n geldige e-posadres in. n”;
    }
    retourfout;
    }

  21. 30

    funksie validateEmail (fld) {
    var fout = ””;
    var tfld = trim (fld.value); // waarde van veld met wit spasie afgesny
    var emailFilter = /^ [^ @] + @ [^^.] +. [^^] ]ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == "Voer u e-posadres in") {

    error = “Voer asseblief u e-posadres in. n”;
    } anders as (! emailFilter.test (tfld)) {// toets e-pos vir onwettige karakters

    error = “Voer asseblief 'n geldige e-posadres in. n”;
    } anders as (fld.value.match (illegalChars)) {

    error = “Voer asseblief 'n geldige e-posadres in. n”;
    }
    retourfout;
    }

  22. 31

    funksie validateEmail (fld) {
    var fout = ””;
    var tfld = trim (fld.value); // waarde van veld met wit spasie afgesny
    var emailFilter = /^ [^ @] + @ [^^.] +. [^^] ]ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == "Voer u e-posadres in") {

    error = “Voer asseblief u e-posadres in. n”;
    } anders as (! emailFilter.test (tfld)) {// toets e-pos vir onwettige karakters

    error = “Voer asseblief 'n geldige e-posadres in. n”;
    } anders as (fld.value.match (illegalChars)) {

    error = “Voer asseblief 'n geldige e-posadres in. n”;
    }
    retourfout;
    }

  23. 32

    funksie validateEmail (fld) {
    var fout = ””;
    var tfld = trim (fld.value); // waarde van veld met wit spasie afgesny
    var emailFilter = /^ [^ @] + @ [^^.] +. [^^] ]ww$/;
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == "Voer u e-posadres in") {

    error = “Voer asseblief u e-posadres in. n”;
    } anders as (! emailFilter.test (tfld)) {// toets e-pos vir onwettige karakters

    error = “Voer asseblief 'n geldige e-posadres in. n”;
    } anders as (fld.value.match (illegalChars)) {

    error = “Voer asseblief 'n geldige e-posadres in. n”;
    }
    retourfout;
    }

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

Wat dink jy?

Hierdie webwerf gebruik Akismet om spam te verminder. Leer hoe jou opmerking verwerk is.