Gwiriwch y Cyfeiriad E-bost gyda JavaScript a Mynegiadau Rheolaidd

Ychydig amser yn ôl, codais a Gwiriwr Cryfder Cyfrinair gan ddefnyddio JavaScript a Mynegiadau Rheolaidd. Ar yr un nodyn hwnnw, gallwch hefyd wirio strwythur cyfeiriad e-bost gan ddefnyddio'r un fethodoleg mynegiant rheolaidd (regex).

Os oes gan eich elfen ffurflen y id = ”emailaddress” ac rydych chi'n ychwanegu ffurflen onSubmit = ”dychwelyd checkEmail ();“, Mae hon yn swyddogaeth Javascript y gallwch ei defnyddio i ddychwelyd rhybudd os oes gan y cyfeiriad e-bost strwythur dilys ai peidio:

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

Mae'r swyddogaeth yn dilysu cynnwys yr e-bost i gynnwys yr hidlydd. Os bydd y gymhariaeth yn methu, mae'n gosod rhybudd ac yn dychwelyd y ffocws yn ôl i'r maes cyfeiriad e-bost!

41 Sylwadau

  1. 1

    Ar gyfer ffurflenni sydd â sawl cyfeiriad e-bost, byddai'n dda gwneud class = "emailaddress". Os oes gennych y llyfrgell prototeip.js (http://www.prototypejs.org) wedi'i gynnwys ar y dudalen gallwch wneud rhywbeth fel hyn:

    var dilys = gwir;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress') yr un (swyddogaeth (e-bost) {
    os (! filter.test (email.value)) {
    rhybudd (? Rhowch gyfeiriad e-bost dilys os gwelwch yn dda?);
    e-bost.focus;
    dilys = ffug;
    }
    });
    dychwelyd yn ddilys;

  2. 5
  3. 7

    Rwy'n hoffi'r syniad, ond byddwn yn betrusgar mabwysiadu'r mynegiant rheolaidd penodol hwn heb ddisgrifiad o ba gyfeiriadau e-bost cyfreithiol nad yw'n eu derbyn a pha gyfeiriadau anghyfreithlon y mae'n eu caniatáu.

    Am enghraifft o fynegiant rheolaidd sy'n gwneud gwaith gweddus ochr yn ochr ag esboniad o ba achosion nad yw'n ymdrin â nhw, gweler hyn:

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

    Fy newis personol yw ymdrin â'r rhan fwyaf o'r achosion syml a rhoi rhybudd am bopeth arall yn hytrach na'i wrthod. Os yw Bob wir eisiau sto cyflwyno bob@com.museum yn hytrach na bob@museum.com, beth am adael iddo?

    • 8

      Helo Reg,

      Gallwch chi brofi'r Regex gan ddefnyddio Profwr Regex Ar-lein.

      Hefyd, yn bendant mae llawer mwy y gellir ei wneud os ydych chi am sicrhau cyfeiriad e-bost yn ddilys yn unol â'r RFC.

      Mae yna ychydig o resymau dros beidio â chaniatáu i rywun nodi cyfeiriad e-bost annilys:
      1. Byddant yn eich cythruddo pan na fydd yr e-bost yr oeddent yn ei ddisgwyl yn dod drwyddo - ni waeth ai eich bai chi oedd y cofnod, cofnodwyd y cyfeiriad yn anghywir.
      2. Pe bai com.museum yn barth dilys a, gadewch i ni ddweud, Yahoo! ei weithredu - byddai unrhyw gyfeiriad e-bost a adlamodd yn cael effaith negyddol ar enw da eich cwmni am ddosbarthu e-bost. Gallai hyn arwain at rwystro holl e-bost eich cwmni.
      3. Os oedd eich darparwr gwasanaeth e-bost yn caniatáu ichi fynd i mewn bob@com.museum, byddech hefyd yn talu am bob e-bost a anfonir i'r cyfeiriad e-bost hwnnw nes iddynt ddad-danysgrifio'r cyfeiriad hwnnw oherwydd bownsio. Byddwn yn cadw'n glir o unrhyw ESP a fyddai'n caniatáu cyfeiriad e-bost annilys fel 'na - maen nhw'n cymryd eich arian yn unig!

      Diolch am roi'r gorau iddi!
      Doug

  4. 9
  5. 10

    Mae yna ffordd symlach o lawer o ysgrifennu'r ymadrodd:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Gyda'r addasydd terfynol / i nid oes angen nodi'r ystod achosion uchaf.
    - Nid wyf yn gwybod am ddim TLD gyda rhifau ynddo.
    Ar nodyn ochr, rwy'n caniatáu TLD gyda hyd at 6 chars; mae rhai newydd yn cyrraedd yn rheolaidd a dydych chi byth yn gwybod (wel, efallai y bydd gan rai yn y dyfodol rifau ynddo hyd yn oed, dwi'n gwybod).

  6. 11

    Hi 'na,

    Rwy'n ceisio defnyddio hwn ar ffurf sy'n bodoli mewn amser real, ond nid yw'n ymddangos bod hyn yn dilysu mewn amser real fel eich gwiriwr cryfder cyfrinair ...

    Neu, ai fi yw'r unig gliw hwnnw, ac a yw'n gweithio i mi?

  7. 12

    btw, rwy'n hoff iawn o'r hyn sydd gennych yn digwydd yma, mae eich tiwtorialau yn syml iawn, byddaf yn bendant yn rhoi nod tudalen ar yr un hon….

  8. 13
  9. 16
  10. 17

    Cywiriad bach yn unig: Mae gan yr ymadrodd rheolaidd () + ychwanegol ar y diwedd. Dylai ddarllen:

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

    Gyda'r un cyntaf, byddai TLDs o unrhyw hyd yn cael eu derbyn (nad yw'n anghywir yn y bôn fel y mae eraill wedi nodi, ond os mai dyna'r bwriad, gellid byrhau'r mynegiant).

  11. 18

    A allwch chi egluro mynegiad rheolaidd y cod hwn a sut mae'n gweithio? Hefyd am .test - A yw .test yn ddatganiad diofyn yn javascript i wirio pethau fel y gwnaethoch yn y cod uchod?

  12. 19

    Cod byr yw hwn ar gyfer mynegiant e-bost-

    swyddogaeth validateEmail (id)
    {
    var emailPattern = /^0a-zA-Z9-0._-9+@DLE-zA-Z2,4-XNUMX.-XNUMX+.DLE-zA-ZXNUMXinneach$/;
    dychwelyd emailPattern.test (id);

    }
    Deepak Rai
    varanasi

  13. 20

    Cod byr yw hwn ar gyfer mynegiant e-bost-

    swyddogaeth validateEmail (id)
    {
    var emailPattern = /^0a-zA-Z9-0._-9+@DLE-zA-Z2,4-XNUMX.-XNUMX+.DLE-zA-ZXNUMXinneach$/;
    dychwelyd emailPattern.test (id);

    }
    Deepak Rai
    varanasi

  14. 21
  15. 22
  16. 23

    Diolch, ond mae gwall yn y regex hwn. Nid wyf yn arbenigwr regex, ond ceisiais e-bost:

    prawf @ prawf

    ac fe basiodd y regex ... sylwais ei fod yn brin o ddianc o'r "." felly dylai fod:

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

  17. 24
  18. 27

    Wel, gwiriad bras yn unig yw hwn ond nid 100% yn gywir, er enghraifft byddai hyn yn iawn john_doe. @ gmail.com nad yw mewn gwirionedd yn gyfeiriad e-bost dilys (ni chaniateir dot fel cymeriad olaf yn rhan leol e-bost).
    Hefyd byddai'n derbyn john…doe@gmail.com sydd hefyd yn annilys gan na all fod mwy nag un dot mewn dilyniant.

    Dyma ychydig o ddiffygion y sylwais arnynt ar yr olwg gyntaf.
    Nid yw fy mwriad yn basio dim ond tynnu sylw at hyn rhag ofn bod rhywun yn bwriadu defnyddio hwn fel gwiriad diogelwch - ddim yn ddigon diogel.

    I gael gwybodaeth am gyfeiriadau e-bost dilys, gwiriwch hyn: http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Deepak,

    A dweud y gwir, rwy’n credu bod angen i chi gymhwyso dihangfa ar gyfer y dot (“.”). Felly, dylai eich swyddogaeth fod, yn lle:

    swyddogaeth validateEmail (id)
    {
    var emailPattern = /^0a-zA-Z9-0._-9+@DLE-zA-Z2,4-XNUMX.-XNUMX+.DLE-zA-ZXNUMXinneach$/;
    dychwelyd emailPattern.test (id);

    }

    Fel arall, byddai'r dot yn golygu “unrhyw gymeriad”. Rwy'n credu bod angen dianc rhag cymeriadau arbennig o'r fath.

    Regards,

    Federico

  20. 29

    swyddogaeth validateEmail (fld) {
    gwall var = ””;
    var tfld = trim (fld.value); // gwerth y cae gyda gofod gwyn wedi'i docio
    var emailFilter = /^$^@XNUMX+@DLE^@.XNUMX+.DLE@@**ww$/;
    var illeChars = / [(),;: \ ”[]] /;

    os (fld.value == “Rhowch eich Cyfeiriad e-bost”) {

    error = “Rhowch eich cyfeiriad E-bost.n”;
    } arall os (! emailFilter.test (tfld)) {// profi e-bost ar gyfer cymeriadau anghyfreithlon

    error = “Rhowch gyfeiriad e-bost dilys.n”;
    } arall os (fld.value.match (illeChars)) {

    error = “Rhowch gyfeiriad e-bost dilys.n”;
    }
    gwall dychwelyd;
    }

  21. 30

    swyddogaeth validateEmail (fld) {
    gwall var = ””;
    var tfld = trim (fld.value); // gwerth y cae gyda gofod gwyn wedi'i docio
    var emailFilter = /^$^@XNUMX+@DLE^@.XNUMX+.DLE@@**ww$/;
    var illeChars = / [(),;: \ ”[]] /;

    os (fld.value == “Rhowch eich Cyfeiriad e-bost”) {

    error = “Rhowch eich cyfeiriad E-bost.n”;
    } arall os (! emailFilter.test (tfld)) {// profi e-bost ar gyfer cymeriadau anghyfreithlon

    error = “Rhowch gyfeiriad e-bost dilys.n”;
    } arall os (fld.value.match (illeChars)) {

    error = “Rhowch gyfeiriad e-bost dilys.n”;
    }
    gwall dychwelyd;
    }

  22. 31

    swyddogaeth validateEmail (fld) {
    gwall var = ””;
    var tfld = trim (fld.value); // gwerth y cae gyda gofod gwyn wedi'i docio
    var emailFilter = /^$^@XNUMX+@DLE^@.XNUMX+.DLE@@**ww$/;
    var illeChars = / [(),;: \ ”[]] /;

    os (fld.value == “Rhowch eich Cyfeiriad e-bost”) {

    error = “Rhowch eich cyfeiriad E-bost.n”;
    } arall os (! emailFilter.test (tfld)) {// profi e-bost ar gyfer cymeriadau anghyfreithlon

    error = “Rhowch gyfeiriad e-bost dilys.n”;
    } arall os (fld.value.match (illeChars)) {

    error = “Rhowch gyfeiriad e-bost dilys.n”;
    }
    gwall dychwelyd;
    }

  23. 32

    swyddogaeth validateEmail (fld) {
    gwall var = ””;
    var tfld = trim (fld.value); // gwerth y cae gyda gofod gwyn wedi'i docio
    var emailFilter = /^$^@XNUMX+@DLE^@.XNUMX+.DLE@@**ww$/;
    var illeChars = / [(),;: \ ”[]] /;

    os (fld.value == “Rhowch eich Cyfeiriad e-bost”) {

    error = “Rhowch eich cyfeiriad E-bost.n”;
    } arall os (! emailFilter.test (tfld)) {// profi e-bost ar gyfer cymeriadau anghyfreithlon

    error = “Rhowch gyfeiriad e-bost dilys.n”;
    } arall os (fld.value.match (illeChars)) {

    error = “Rhowch gyfeiriad e-bost dilys.n”;
    }
    gwall dychwelyd;
    }

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

Beth ydych chi'n feddwl?

Mae'r wefan hon yn defnyddio Akismet i leihau sbam. Dysgwch sut mae eich data sylwadau yn cael ei brosesu.