آدرس ایمیل را با JavaScript و عبارات منظم بررسی کنید

چند وقت پیش من یک قرار داده است جستجوگر قدرت رمز عبور با استفاده از JavaScript و عبارات منظم. در همان یادداشت ، می توانید ساختار آدرس ایمیل را با استفاده از همان روش بیان منظم (regex) بررسی کنید.

اگر عنصر فرم شما دارای id = "آدرس ایمیل" و شما یک فرم اضافه می کنید onSubmit = ”check 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

    For forms with multiple email addresses, it would be good to do class=”emailaddress”. If you have the prototype.js library (http://www.prototypejs.org) موجود در صفحه می توانید مانند این کار انجام دهید:

    var معتبر = درست؛
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ('. emailaddress'). هر (عملکرد (ایمیل) {
    if (! filter.test (email.value)) {
    هشدار (؟ لطفاً یک آدرس ایمیل معتبر ارائه دهید؟)؛
    ایمیل. کانون
    معتبر = نادرست ؛
    }
    })؛
    معتبر برگرداندن؛

  2. 5
  3. 7

    من ایده را دوست دارم ، اما من در تأیید این عبارت خاص منظم و بدون شرح اینکه کدام آدرس ایمیل قانونی را قبول نمی کند و آدرس های غیرقانونی را که اجازه می دهد ، مردد هستم.

    برای مثال یک عبارت منظم که در کنار توضیح اینکه مواردی را شامل نمی شود ، کار مناسبی انجام می دهد ، این را ببینید:

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

    ترجیح شخصی من این است که بیشتر موارد ساده را پوشش دهم و به جای رد کردن ، برای همه موارد دیگر اخطار بدهم. اگر باب واقعاً می خواهد تسلیم شود bob@com.museum به جای bob@museum.com، چرا اجازه ندهید؟

    • 8

      سلام Reg ،

      با استفاده از می توانید Regex را امتحان کنید تستر آنلاین Regex.

      همچنین ، اگر می خواهید اطمینان حاصل کنید ، مطمئناً کارهای بیشتری می توان انجام داد آدرس ایمیل مطابق با RFC معتبر است.

      چند دلیل وجود دارد که اجازه نمی دهد شخصی آدرس ایمیل نامعتبر را وارد کند:
      1. They will get annoyed at you when the email they expected doesn’t get through – regardless of whether or not it was your fault the address was entered incorrectly.
      2. If com.museum was a valid domain and, let’s say, Yahoo! operated it – any email address that bounced would have a negative impact on your company’s reputation for email delivery. This could lead to all of your company’s email being blocked.
      3. If your email service provider allowed you to enter bob@com.museum, you’d also pay for each email sent to that email address until they unsubscribed that address due to bounces. I would steer clear of any ESP that would allow an invalid email address like that – they’re just taking your money!

      متشکرم برای متوقف کردن!
      داگ

  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

    btw ، من واقعاً دوست دارم آنچه را که در اینجا می گذرانید ، آموزشهای شما بسیار ساده است ، من قطعاً این یکی را نشانه گذاری می کنم

  8. 13
  9. 16
  10. 17

    فقط یک اصلاح کوچک: عبارت منظم در انتها + (+) اضافی دارد. این باید بخواند:

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

    با اولین مورد ، هر نوع طول TLD پذیرفته می شود (که از نظر ذاتی اشتباه نیست ، همانطور که دیگران اشاره کردند ، اما اگر این هدف باشد ، می توان این عبارت را کوتاه کرد).

  11. 18

    لطفاً می توانید بیان منظم این کد و نحوه کار آن را توضیح دهید؟ همچنین درمورد .test - آیا .test عبارتی پیش فرض در javascript برای بررسی مواردی است که در کد بالا انجام داده اید؟

  12. 19

    این یک کد کوتاه برای بیان ایمیل است -

    تابع اعتبارسنجی ایمیل (شناسه)
    {
    var emailPattern = /^^a-zA-Z0-9._-++@repta-zA-Z0-9.
    بازگشت emailPattern.test (شناسه)؛

    }
    دیپاک رای
    وارناسي

  13. 20

    این یک کد کوتاه برای بیان ایمیل است -

    تابع اعتبارسنجی ایمیل (شناسه)
    {
    var emailPattern = /^^a-zA-Z0-9._-++@repta-zA-Z0-9.
    بازگشت emailPattern.test (شناسه)؛

    }
    دیپاک رای
    وارناسي

  14. 21
  15. 22
  16. 23

    متشکرم ، اما در این regex خطایی رخ داده است. من یک متخصص 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

    دیپاک ،

    در واقع ، من فکر می کنم شما باید برای نقطه استفاده کنید ("."). بنابراین ، عملکرد شما باید به جای این باشد:

    تابع اعتبارسنجی ایمیل (شناسه)
    {
    var emailPattern = /^^a-zA-Z0-9._-++@repta-zA-Z0-9.
    بازگشت emailPattern.test (شناسه)؛

    }

    در غیر این صورت ، نقطه به معنای "هر کاراکتر" است. من معتقدم که باید از چنین شخصیت های خاصی فرار کرد.

    با احترام،

    فدریکو

  20. 29

    تابع validateEmail (fld) {
    var خطا = ""؛
    var tfld = trim(fld.value); // value of field with whitespace trimmed off
    var emailFilter = /^^^+++ [^^@.^+.^^]***/؛
    var legalChars = / [() ،؛: \ "[]] /؛

    if (fld.value == "آدرس ایمیل خود را وارد کنید") {

    error = "لطفا آدرس ایمیل خود را وارد کنید. n"؛
    } else if (!emailFilter.test(tfld)) { //test email for illegal characters

    error = "لطفاً یک آدرس ایمیل معتبر وارد کنید. n"؛
    } other if (fld.value.match (غیر قانونی Chars)) {

    error = "لطفاً یک آدرس ایمیل معتبر وارد کنید. n"؛
    }
    خطای بازگشت؛
    }

  21. 30

    تابع validateEmail (fld) {
    var خطا = ""؛
    var tfld = trim(fld.value); // value of field with whitespace trimmed off
    var emailFilter = /^^^+++ [^^@.^+.^^]***/؛
    var legalChars = / [() ،؛: \ "[]] /؛

    if (fld.value == "آدرس ایمیل خود را وارد کنید") {

    error = "لطفا آدرس ایمیل خود را وارد کنید. n"؛
    } else if (!emailFilter.test(tfld)) { //test email for illegal characters

    error = "لطفاً یک آدرس ایمیل معتبر وارد کنید. n"؛
    } other if (fld.value.match (غیر قانونی Chars)) {

    error = "لطفاً یک آدرس ایمیل معتبر وارد کنید. n"؛
    }
    خطای بازگشت؛
    }

  22. 31

    تابع validateEmail (fld) {
    var خطا = ""؛
    var tfld = trim(fld.value); // value of field with whitespace trimmed off
    var emailFilter = /^^^+++ [^^@.^+.^^]***/؛
    var legalChars = / [() ،؛: \ "[]] /؛

    if (fld.value == "آدرس ایمیل خود را وارد کنید") {

    error = "لطفا آدرس ایمیل خود را وارد کنید. n"؛
    } else if (!emailFilter.test(tfld)) { //test email for illegal characters

    error = "لطفاً یک آدرس ایمیل معتبر وارد کنید. n"؛
    } other if (fld.value.match (غیر قانونی Chars)) {

    error = "لطفاً یک آدرس ایمیل معتبر وارد کنید. n"؛
    }
    خطای بازگشت؛
    }

  23. 32

    تابع validateEmail (fld) {
    var خطا = ""؛
    var tfld = trim(fld.value); // value of field with whitespace trimmed off
    var emailFilter = /^^^+++ [^^@.^+.^^]***/؛
    var legalChars = / [() ،؛: \ "[]] /؛

    if (fld.value == "آدرس ایمیل خود را وارد کنید") {

    error = "لطفا آدرس ایمیل خود را وارد کنید. n"؛
    } else if (!emailFilter.test(tfld)) { //test email for illegal characters

    error = "لطفاً یک آدرس ایمیل معتبر وارد کنید. n"؛
    } other if (fld.value.match (غیر قانونی Chars)) {

    error = "لطفاً یک آدرس ایمیل معتبر وارد کنید. n"؛
    }
    خطای بازگشت؛
    }

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

شما چه فکر میکنید؟

این سایت از Akismet برای کاهش هرزنامه استفاده می کند. بدانید که چگونه نظر شما پردازش می شود.