Athugaðu netfangið með JavaScript og reglulegu segð

Fyrir stuttu setti ég upp a Styrktaraðili lykilorðs með JavaScript og reglulegu segð. Á sömu nótum er einnig hægt að athuga uppbyggingu netfangsins með sömu reglulegu segð (regex) aðferðafræði.

Ef formþátturinn þinn hefur id = ”netfang“ og þú bætir við eyðublaði onSubmit = ”return checkEmail ();“, Þetta er Javascript aðgerð sem þú getur notað til að skila viðvörun ef netfangið hefur gilda uppbyggingu eða ekki:

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

Aðgerðin staðfestir innihald tölvupóstsins við það sem er í síunni. Ef samanburðurinn misheppnast birtist hann viðvörun og skilar fókusinum aftur á netfangareitinn!

41 Comments

  1. 1

    Fyrir eyðublöð með mörgum netföngum væri gott að gera class="netfang". Ef þú ert með prototype.js bókasafnið (http://www.prototypejs.org) með á síðunni geturðu gert eitthvað á þessa leið:

    var valid = satt;
    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(?Vinsamlegast gefðu upp gilt netfang?);
    email.focus;
    gilt = ósatt;
    }
    });
    skil gilt;

  2. 5
  3. 7

    Mér líst vel á hugmyndina, en ég myndi hika við að taka upp þessa tilteknu reglulegu tjáningu án þess að lýsa hvaða löglegu netföngum það samþykkir ekki og hvaða ólöglegu netföng það leyfir.

    Fyrir dæmi um reglubundna tjáningu sem skilar þokkalegu starfi ásamt útskýringu á hvaða tilfellum hún nær ekki til, sjá þetta:

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

    Mín persónulega ósk er að ná yfir flest einföldu tilvikin og gefa út viðvörun um allt annað frekar en að hafna því. Ef Bob vill virkilega leggja fram bob@com.museum í stað þess að bob@museum.com, af hverju ekki að leyfa honum?

    • 8

      Hæ Reg,

      Þú getur prófað Regex með því að nota an Regex prófunartæki á netinu.

      Einnig, það er örugglega miklu meira sem hægt er að gera ef þú vilt tryggja netfang gildir í samræmi við RFC.

      Það eru nokkrar ástæður fyrir því að leyfa ekki einhverjum að slá inn ógilt netfang:
      1. Þeir verða pirraðir á þér þegar tölvupósturinn sem þeir bjuggust við kemst ekki í gegn – óháð því hvort það var þér að kenna að heimilisfangið var rangt slegið inn.
      2. Ef com.museum væri gilt lén og við skulum segja Yahoo! starfrækti það - hvaða netfang sem skoppaði myndi hafa neikvæð áhrif á orðspor fyrirtækisins fyrir sendingu tölvupósts. Þetta gæti leitt til þess að öllum tölvupósti fyrirtækis þíns verði lokað.
      3. Ef tölvupóstþjónustan þín leyfði þér að slá inn bob@com.museum, þú myndir líka borga fyrir hvern tölvupóst sem sendur er á það netfang þar til þeir sögðu upp áskriftinni vegna hopp. Ég myndi forðast hvaða ESP sem myndi leyfa ógilt netfang eins og það - þeir eru bara að taka peningana þína!

      Takk fyrir að hætta við!
      Doug

  4. 9
  5. 10

    Það er miklu einfaldari leið til að skrifa orðatiltækið:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    – Með lokabreytingunni /i er engin þörf á að gefa til kynna hástafasviðið.
    — Ég veit ekki um neina Þjóðarlén með tölum í.
    Til hliðar, ég leyfi TLD með allt að 6 stöfum; nýir koma reglulega og það er aldrei að vita (jæja, sumar framtíðar geta jafnvel verið með tölur, ég veit).

  6. 11

    Hi there,

    Ég er að reyna að nota þetta á núverandi formi í rauntíma, en þetta virðist ekki vera að sannreyna í rauntíma eins og styrktarprófun lykilorðs þíns ...

    Eða er ég bara svona hugmyndalaus og það virkar ekki fyrir mig?

  7. 12

    btw, mér líkar mjög við það sem þú ert að gerast hér, kennsluefnin þín eru mjög einföld, ég mun örugglega setja bókamerki á þetta….

  8. 13
  9. 16
  10. 17

    Bara smá leiðrétting: Regluleg segðin hefur auka ()+ í lokin. Þar ætti að standa:

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

    Með því fyrsta væri hægt að samþykkja hvaða lengd TLD sem er (sem er ekki í eðli sínu rangt eins og aðrir hafa bent á, en ef það væri ætlunin væri hægt að stytta tjáninguna).

  11. 18

    Geturðu vinsamlegast útskýrt reglubundna tjáningu þessa kóða og hvernig hann virkar? Einnig um .test – Er .test sjálfgefin staðhæfing í javascript til að athuga hluti eins og þú gerðir í kóðanum hér að ofan?

  12. 19

    Þetta er stuttur kóði fyrir tjáningu tölvupósts-

    virka staðfestaEmail(id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    skilaðu emailPattern.test(id);

    }
    Deepak Rai
    varanasi

  13. 20

    Þetta er stuttur kóði fyrir tjáningu tölvupósts-

    virka staðfestaEmail(id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    skilaðu emailPattern.test(id);

    }
    Deepak Rai
    varanasi

  14. 21
  15. 22
  16. 23

    Takk, en það er villa í þessu regex. Ég er ekki regex sérfræðingur, en ég prófaði tölvupóst:

    próf@próf

    og það fór framhjá regex... Ég tók eftir því að það vantar að sleppa við "." þannig að það ætti að vera:

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

  17. 24
  18. 27

    Jæja, þetta er bara gróf athugun en ekki 100% nákvæm, til dæmis væri þetta í lagi john_doe.@gmail.com sem er í raun ekki gilt netfang (punktur er ekki leyfður sem síðasti stafur í staðbundnum hluta tölvupósts).
    Einnig myndi það samþykkja john…doe@gmail.com sem er einnig ógilt þar sem það getur ekki verið fleiri en einn punktur í röð.

    Þetta eru bara nokkrir gallar sem ég tók eftir við fyrstu sýn.
    Ætlun mín er ekki bara að benda á þetta ef einhver ætlar að nota þetta sem öryggisathugun - ekki nógu öruggt.

    Fyrir upplýsingar um gild netföng skoðaðu þetta: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    Reyndar held ég að þú þurfir að beita undankomu fyrir punktinn (“.”). Svo aðgerðin þín ætti að vera í staðinn:

    virka staðfestaEmail(id)
    {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    skilaðu emailPattern.test(id);

    }

    Annars myndi punkturinn þýða „hvaða staf sem er“. Ég tel að það þurfi að flýja svona sérpersónur.

    kveðjur,

    Federico

  20. 29

    fall validateEmail(fld) {
    var villa="";
    var tfld = trim(fld.value); // gildi reitsins með bili klippt af
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == „Sláðu inn netfangið þitt“) {

    error = "Vinsamlegast sláðu inn netfangið þitt.n";
    } else if (!emailFilter.test(tfld)) { //próf tölvupóstur fyrir ólöglega stafi

    error = "Vinsamlegast sláðu inn gilt netfang.n";
    } annað ef (fld.value.match(illegalChars)) {

    error = "Vinsamlegast sláðu inn gilt netfang.n";
    }
    skila villa;
    }

  21. 30

    fall validateEmail(fld) {
    var villa="";
    var tfld = trim(fld.value); // gildi reitsins með bili klippt af
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == „Sláðu inn netfangið þitt“) {

    error = "Vinsamlegast sláðu inn netfangið þitt.n";
    } else if (!emailFilter.test(tfld)) { //próf tölvupóstur fyrir ólöglega stafi

    error = "Vinsamlegast sláðu inn gilt netfang.n";
    } annað ef (fld.value.match(illegalChars)) {

    error = "Vinsamlegast sláðu inn gilt netfang.n";
    }
    skila villa;
    }

  22. 31

    fall validateEmail(fld) {
    var villa="";
    var tfld = trim(fld.value); // gildi reitsins með bili klippt af
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == „Sláðu inn netfangið þitt“) {

    error = "Vinsamlegast sláðu inn netfangið þitt.n";
    } else if (!emailFilter.test(tfld)) { //próf tölvupóstur fyrir ólöglega stafi

    error = "Vinsamlegast sláðu inn gilt netfang.n";
    } annað ef (fld.value.match(illegalChars)) {

    error = "Vinsamlegast sláðu inn gilt netfang.n";
    }
    skila villa;
    }

  23. 32

    fall validateEmail(fld) {
    var villa="";
    var tfld = trim(fld.value); // gildi reitsins með bili klippt af
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
    var illegalChars= /[(),;:\”[]]/ ;

    if (fld.value == „Sláðu inn netfangið þitt“) {

    error = "Vinsamlegast sláðu inn netfangið þitt.n";
    } else if (!emailFilter.test(tfld)) { //próf tölvupóstur fyrir ólöglega stafi

    error = "Vinsamlegast sláðu inn gilt netfang.n";
    } annað ef (fld.value.match(illegalChars)) {

    error = "Vinsamlegast sláðu inn gilt netfang.n";
    }
    skila villa;
    }

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

Hvað finnst þér?

Þessi síða notar Akismet til að draga úr ruslpósti. Lærðu hvernig ummæli þín eru unnin.