JavaScript болон ердийн илэрхийлэл бүхий имэйл хаягийг шалгана уу

Хэсэг хугацааны өмнө би а JavaScript болон ердийн илэрхийлэл ашиглан нууц үгийн хүчийг шалгагч. Дээрх тэмдэглэл дээр та ижил тогтмол илэрхийлэл (regex) аргачлалыг ашиглан имэйлийн хаягийн бүтцийг шалгаж болно.

Хэрэв таны маягтын элементэд id = "имэйл хаяг" мөн та маягт нэмнэ үү onSubmit = ”return checkEmail ();“, Энэ бол Javascript функц бөгөөд хэрэв та имэйл хаяг хүчинтэй бүтэцтэй эсвэл байхгүй бол анхааруулга буцааж өгөх боломжтой.

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

Функц нь имэйлийн агуулгыг шүүлтүүртэй адилтгаж өгдөг. Хэрэв харьцуулалт амжилтгүй болбол анхааруулга гарч ирэн фокусыг имэйл хаягийн талбарт буцааж өгнө!

41 санал

  1. 1

    Олон имэйл хаяг бүхий маягтуудын хувьд class = ”emailaddress” хийвэл сайн байна. Хэрэв танд prototype.js номын сан байгаа бол (http://www.prototypejs.org) хуудсан дээр дараахь зүйлийг хийж болно:

    var valid = үнэн;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). тус бүр (функц (имэйл) {
    хэрэв (! filter.test (email.value)) {
    анхааруулга (? Зөв имэйл хаяг оруулна уу?);
    имэйл. фокус;
    хүчинтэй = худал;
    }
    });
    буцах хүчинтэй;

  2. 5
  3. 7

    Энэ санаа надад таалагдаж байна, гэхдээ энэ ердийн илэрхийлэлийг ямар хууль ёсны имэйл хаягийг хүлээн авахгүй, хууль бус хаягийг зөвшөөрөх талаар тайлбаргүйгээр ашиглахыг би эргэлзэх болно.

    Энэ нь ямар тохиолдлуудад хамаарахгүй болохыг тайлбарлахын зэрэгцээ зохистой ажил хийдэг тогтмол хэллэгийн жишээг эндээс үзнэ үү.

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

    Миний хувийн сонголт бол ихэнх энгийн тохиолдлуудыг хамарч, татгалзахаас илүүтэй бусад бүх зүйлд анхааруулга өгөх явдал юм. Хэрэв Боб үнэхээр ирүүлэхийг хүсч байвал bob@com.museum харин биш bob@museum.com, яагаад түүнд зөвшөөрөхгүй байгаа юм бэ?

    • 8

      Сайн уу, Рэг,

      Ange ашиглан Regex-ийг туршиж үзэх боломжтой Онлайн Regex шалгагч.

      Түүнчлэн, хэрэв та үүнийг баталгаажуулахыг хүсч байвал илүү их зүйлийг хийх боломжтой болно имэйл хаяг RFC-ийн дагуу хүчинтэй байна.

      Хүчин төгөлдөр бус имэйл хаяг оруулахыг зөвшөөрөхгүй байх хэд хэдэн шалтгаан бий.
      1. Таны буруу байсан эсэхээс үл хамааран хаягийг буруу оруулсан эсэхээс үл хамааран таны хүлээж байсан имэйл ирэхгүй байх үед тэд танд эгдүүцэх болно.
      2. Хэрэв com.museum нь хүчин төгөлдөр домэйн байсан бол, Yahoo! үүнийг ажиллуулж байсан - үсрэх имэйл хаягууд танай компанийн имэйлийг хүргэх нэр хүндэд сөргөөр нөлөөлнө. Энэ нь танай компанийн бүх имэйлийг блоклоход хүргэж болзошгүй юм.
      3. Хэрэв таны имэйлийн үйлчилгээ үзүүлэгч танд нэвтрэхийг зөвшөөрсөн бол bob@com.museum, мөн имэйл хаяг руу илгээсэн имэйл тус бүрийн төлбөрийг тэд үсрэлтээс болж захиалгаа цуцлах хүртэл төлөх ёстой. Хүчин төгөлдөр бус имэйл хаяг оруулахыг зөвшөөрөх бүх ESP-ээс зайлсхийх болно - тэд зүгээр л таны мөнгийг авч байна!

      Цаашлаад зогсоосон танд баярлалаа!
      Даг

  4. 9
  5. 10

    Илэрхийлэл бичих илүү хялбар арга байдаг:
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    - Эцсийн тохируулагчтай бол i үсгийн дээд мужийг зааж өгөх шаардлагагүй болно.
    - Би юу ч мэдэхгүй TLD дотор нь тоо байна.
    Хажуугийн тэмдэглэл дээр би TLD-ийг 6 хүртэлх тэмдэгтээр зөвшөөрдөг. шинэ нь тогтмол ирдэг бөгөөд та хэзээ ч мэдэхгүй (ирээдүйд ирээдүйн хүмүүс дугаартай байж болно, би мэднэ).

  6. 11

    Сайн байна уу,

    Би үүнийг одоо байгаа хэлбэрээр бодит цаг хугацаанд ашиглахыг хүсч байна, гэхдээ энэ нь таны нууц үгийн баталгааг шалгагч шиг бодит цагт баталгаажихгүй байна ...

    Эсвэл би яг ийм увайгүй хүн үү, энэ нь миний хувьд үр дүнгээ өгөхгүй байна уу?

  7. 12
  8. 13

    Зүгээр л нэг мэдээлэл; Би Ade-ийн шийдлийг туршиж үзээгүй боловч дээрх загвар нь дотор нь апостроф бүхий имэйл хаягийг баталгаажуулахгүй байна .. (жишээлбэл, Mike.O'Hare@Whatever.com). Апостроф нь RFC 2821/2822 -> -д хүчинтэй http://www.faqs.org/rfcs/rfc2822.html

    HTH,
    Санжай

  9. 16

    Хэрэв бид WordPress дээрх сэтгэгдлүүд дээр хуурамч имэйл хаяг оруулахгүй байх шийдлийг олж чадвал зүгээр байх

  10. 17

    Багахан залруулга: Ердийн илэрхийлэл эцэст нь нэмэлт () + тэмдэгтэй байна. Үүнийг унших ёстой:

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

    Эхнийх нь дурын урттай TLD-ийг хүлээн зөвшөөрөх болно (энэ нь бусдын хэлсэнчлэн дотооддоо буруу зүйл биш, гэхдээ ийм зорилготой байсан бол илэрхийлэлийг богиносгож болно).

  11. 18

    Энэ кодын байнгын илэрхийлэл, хэрхэн ажилладаг талаар тайлбарлаж өгөхгүй юу? .Test-ийн тухай. Дээрх кодонд хийсэн шиг зүйлийг шалгах javascript дэх .test нь анхдагч мэдэгдэл мөн үү?

  12. 19

    Энэ бол имэйлийн илэрхийлэлд зориулсан богино код юм.

    функц баталгаажуулахEmail (id)
    {
    var emailPattern = /^(a-zA-Z0-9._-................+@(a-zA-Z0-9.- ]++ [a-zA-Z] {2,4}$/;
    буцах emailPattern.test (id);

    }
    Дипак Рай
    varanasi

  13. 20

    Энэ бол имэйлийн илэрхийлэлд зориулсан богино код юм.

    функц баталгаажуулахEmail (id)
    {
    var emailPattern = /^(a-zA-Z0-9._-................+@(a-zA-Z0-9.- ]++ [a-zA-Z] {2,4}$/;
    буцах emailPattern.test (id);

    }
    Дипак Рай
    varanasi

  14. 21
  15. 22
  16. 23

    Баярлалаа, гэхдээ энэ регекст алдаа гарсан байна. Би regex-ийн мэргэжилтэн биш боловч имэйлээр оролдож үзлээ:

    тест @ тест

    мөн энэ нь режексийг давсан юм ... "" -ээс зугтаж чадахгүй байгааг анзаарав. тийм байх ёстой:

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

  17. 24
  18. 27

    Энэ бол ердөө л бүдүүлэг шалгалт, гэхдээ 100% үнэн зөв биш, жишээлбэл энэ нь зүгээр байх болно john_doe. @ gmail.com энэ нь үнэндээ хүчин төгөлдөр бус имэйлийн хаяг биш юм (имэйлийн орон нутгийн хэсэгт сүүлчийн тэмдэгт оруулахыг зөвшөөрөхгүй).
    Мөн энэ нь хүлээн авах болно john…doe@gmail.com дараалалд нэгээс илүү цэг байж болохгүй тул хүчингүй болно.

    Эдгээр нь миний анхны харцаар л анзаарсан зарим алдаанууд юм.
    Миний зорилго бол хэн нэгэн үүнийг аюулгүй байдлын шалгалт болгон ашиглахаар төлөвлөж байгаа тохиолдолд үүнийг онцолж хэлэхийг хүсэхгүй байна.

    Хүчин төгөлдөр имэйл хаягуудын талаар мэдээлэл авахыг хүсвэл дараах хаягаар орно уу. http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    Дипак,

    Чухамдаа цэг рүү зугтах өргөдөл гаргах хэрэгтэй гэж бодож байна (“.”). Тиймээс, таны функц дараахь байх ёстой:

    функц баталгаажуулахEmail (id)
    {
    var emailPattern = /^(a-zA-Z0-9._-................+@(a-zA-Z0-9.- ]++ [a-zA-Z] {2,4}$/;
    буцах emailPattern.test (id);

    }

    Үгүй бол цэг нь "ямар ч тэмдэгт" гэсэн үг юм. Ийм онцгой дүрүүдээс зугтах хэрэгтэй гэдэгт би итгэдэг.

    Regards,

    Федерико

  20. 29

    функц validateEmail (fld) {
    var error = "";
    var tfld = обуд (fld.value); // хоосон зайг хассан талбарын утга
    var emailFilter = /^ [^@ ]+@(^@.]
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “Имэйл хаягаа оруулна уу”) {

    error = “Имэйл хаягаа оруулна уу. n”;
    } else if (! emailFilter.test (tfld)) {// хууль бус тэмдэгт байгаа эсэхийг шалгах имэйлийг

    error = “Зөв имэйл хаяг оруулна уу. n”;
    } else if (fld.value.match (illegalChars)) {

    error = “Зөв имэйл хаяг оруулна уу. n”;
    }
    буцах алдаа;
    }

  21. 30

    функц validateEmail (fld) {
    var error = "";
    var tfld = обуд (fld.value); // хоосон зайг хассан талбарын утга
    var emailFilter = /^ [^@ ]+@(^@.]
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “Имэйл хаягаа оруулна уу”) {

    error = “Имэйл хаягаа оруулна уу. n”;
    } else if (! emailFilter.test (tfld)) {// хууль бус тэмдэгт байгаа эсэхийг шалгах имэйлийг

    error = “Зөв имэйл хаяг оруулна уу. n”;
    } else if (fld.value.match (illegalChars)) {

    error = “Зөв имэйл хаяг оруулна уу. n”;
    }
    буцах алдаа;
    }

  22. 31

    функц validateEmail (fld) {
    var error = "";
    var tfld = обуд (fld.value); // хоосон зайг хассан талбарын утга
    var emailFilter = /^ [^@ ]+@(^@.]
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “Имэйл хаягаа оруулна уу”) {

    error = “Имэйл хаягаа оруулна уу. n”;
    } else if (! emailFilter.test (tfld)) {// хууль бус тэмдэгт байгаа эсэхийг шалгах имэйлийг

    error = “Зөв имэйл хаяг оруулна уу. n”;
    } else if (fld.value.match (illegalChars)) {

    error = “Зөв имэйл хаяг оруулна уу. n”;
    }
    буцах алдаа;
    }

  23. 32

    функц validateEmail (fld) {
    var error = "";
    var tfld = обуд (fld.value); // хоосон зайг хассан талбарын утга
    var emailFilter = /^ [^@ ]+@(^@.]
    var illegalChars = / [(),;: \ ”[]] /;

    if (fld.value == “Имэйл хаягаа оруулна уу”) {

    error = “Имэйл хаягаа оруулна уу. n”;
    } else if (! emailFilter.test (tfld)) {// хууль бус тэмдэгт байгаа эсэхийг шалгах имэйлийг

    error = “Зөв имэйл хаяг оруулна уу. n”;
    } else if (fld.value.match (illegalChars)) {

    error = “Зөв имэйл хаяг оруулна уу. n”;
    }
    буцах алдаа;
    }

  24. 33
  25. 34
  26. 35

    '.Focus' нь функц бөгөөд энэ нь дараахь зүйл байх ёстой.

    имэйл. фокус ()

  27. 36

    '.Focus' нь функц бөгөөд энэ нь дараахь зүйл байх ёстой.

    имэйл. фокус ()

  28. 37
  29. 38

    Эрдэнийн чулуу шиг ажилладаг .. javascript дээрх reg илэрхийлэлийг маш сайн ашигладаг ...

  30. 39
  31. 40
    • 41

      Гэхдээ зөвхөн орчин үеийн хөтөчтэй ажилладаг. Харамсалтай нь дэлхий хараахан гүйцэж чадаагүй байна. -
      IPhone руу шуудангийн хайрцгаас илгээсэн

Чи юу гэж бодож байна?

Энэ сайт нь спамыг багасгахын тулд Akismet-ийг ашигладаг. Таны өгөгдлийг хэрхэн боловсруулдаг талаар суралц.