تحقق من عنوان البريد الإلكتروني باستخدام JavaScript والتعبيرات العادية

منذ فترة ، طرحت ملف مدقق قوة كلمة المرور باستخدام JavaScript والتعبيرات العادية. في نفس الملاحظة ، يمكنك أيضًا التحقق من بنية عنوان البريد الإلكتروني باستخدام نفس منهجية التعبير العادي (regex).

إذا كان عنصر النموذج الخاص بك يحتوي على معرف = "عنوان البريد الإلكتروني" وقمت بإضافة نموذج onSubmit = ”return checkEmail () ؛"، هذه وظيفة جافا سكريبت يمكنك استخدامها لإرجاع تنبيه إذا كان عنوان البريد الإلكتروني به بنية صالحة أم لا:

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'). كل (وظيفة (بريد إلكتروني) {
    إذا (! filter.test (email.value)) {
    تنبيه (؟ يرجى تقديم عنوان بريد إلكتروني صالح؟) ؛
    البريد الإلكتروني.
    صالح = خطأ ؛
    }
    })؛
    عودة صالحة

  2. 5
  3. 7

    تعجبني الفكرة ، لكني سأكون مترددًا في اعتماد هذا التعبير العادي المحدد دون وصف عناوين البريد الإلكتروني القانونية التي لا يقبلها والعناوين غير القانونية التي يسمح بها.

    للحصول على مثال للتعبير النمطي الذي يقوم بعمل لائق إلى جانب توضيح الحالات التي لا يغطيها ، انظر هذا:

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

    أفضّل شخصيًا تغطية معظم الحالات البسيطة وإصدار تحذير لكل شيء آخر بدلاً من رفضه. إذا كان بوب يريد حقًا أن يقدم bob@com.museum بدلا من bob@museum.comلماذا لا تدعه؟

    • 8

      مرحبا ريج ،

      يمكنك اختبار Regex باستخدام ملف Regex Tester عبر الإنترنت.

      أيضًا ، هناك بالتأكيد الكثير الذي يمكن القيام به إذا كنت ترغب في ضمان وجود ملف عنوان البريد الإلكتروني صالح وفقًا لـ 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;
    - مع المعدل النهائي / لا توجد حاجة للإشارة إلى نطاق الأحرف الكبيرة.
    - أنا لا أعرف أي شيء TLD مع وجود أرقام فيه.
    في ملاحظة جانبية ، أسمح بـ TLD مع ما يصل إلى 6 أحرف ؛ يصل الأشخاص الجدد بانتظام وأنت لا تعرف أبدًا (حسنًا ، قد يكون هناك أرقام في المستقبل ، كما أعلم).

  6. 11

    مرحبا هناك،

    أرغب في استخدام هذا في نموذج موجود في الوقت الفعلي ، ولكن لا يبدو أن هذا يتحقق في الوقت الفعلي مثل مدقق قوة كلمة المرور ...

    أو ، هل أنا مجرد جاهل ، وهذا ليس العمل بالنسبة لي؟

  7. 12

    راجع للشغل ، أنا حقًا أحب ما يحدث هنا ، فبرامجك التعليمية بسيطة جدًا ، وسأقوم بالتأكيد بوضع إشارة مرجعية على هذا ...

  8. 13
  9. 16
  10. 17

    مجرد تصحيح بسيط: التعبير النمطي به علامة () + إضافية في النهاية. يجب أن تقرأ:

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

    مع أول واحد ، سيتم قبول أي TLDs طويلة (وهو ليس خطأ جوهريًا كما أشار الآخرون ، ولكن إذا كانت هذه هي النية ، فيمكن تقصير التعبير).

  11. 18

    هل يمكنك من فضلك شرح التعبير العادي لهذه المدونة وكيف تعمل؟ أيضًا حول .test - هل .test عبارة افتراضية في جافا سكريبت للتحقق من الأشياء كما فعلت في الكود أعلاه؟

  12. 19

    هذا رمز قصير لتعبير البريد الإلكتروني-

    وظيفة التحقق من صحة البريد الإلكتروني (المعرف)
    {
    var emailPattern = / ^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4،XNUMX}$/؛
    إرجاع emailPattern.test (معرف) ؛

    }
    ديباك راي
    فاراناسي

  13. 20

    هذا رمز قصير لتعبير البريد الإلكتروني-

    وظيفة التحقق من صحة البريد الإلكتروني (المعرف)
    {
    var emailPattern = / ^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4،XNUMX}$/؛
    إرجاع 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._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4،XNUMX}$/؛
    إرجاع emailPattern.test (معرف) ؛

    }

    خلاف ذلك ، فإن النقطة تعني "أي حرف". أعتقد أن مثل هذه الشخصيات الخاصة بحاجة إلى الهروب.

    التحيات،

    فيديريكو

  20. 29

    وظيفة التحقق من صحة البريد الإلكتروني (fld) {
    فار خطأ = ”” ؛
    var tfld = trim(fld.value); // value of field with whitespace trimmed off
    var emailFilter = / ^ [^ @ [] +[^ @.]]. [^ @]
    var legalChars = / [()،؛: \ ”[]] /؛

    إذا (fld.value == "أدخل عنوان بريدك الإلكتروني") {

    خطأ = "الرجاء إدخال عنوان بريدك الإلكتروني. n" ؛
    } else if (!emailFilter.test(tfld)) { //test email for illegal characters

    خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
    } else if (fld.value.match (legalChars)) {

    خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
    }
    خطأ العودة
    }

  21. 30

    وظيفة التحقق من صحة البريد الإلكتروني (fld) {
    فار خطأ = ”” ؛
    var tfld = trim(fld.value); // value of field with whitespace trimmed off
    var emailFilter = / ^ [^ @ [] +[^ @.]]. [^ @]
    var legalChars = / [()،؛: \ ”[]] /؛

    إذا (fld.value == "أدخل عنوان بريدك الإلكتروني") {

    خطأ = "الرجاء إدخال عنوان بريدك الإلكتروني. n" ؛
    } else if (!emailFilter.test(tfld)) { //test email for illegal characters

    خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
    } else if (fld.value.match (legalChars)) {

    خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
    }
    خطأ العودة
    }

  22. 31

    وظيفة التحقق من صحة البريد الإلكتروني (fld) {
    فار خطأ = ”” ؛
    var tfld = trim(fld.value); // value of field with whitespace trimmed off
    var emailFilter = / ^ [^ @ [] +[^ @.]]. [^ @]
    var legalChars = / [()،؛: \ ”[]] /؛

    إذا (fld.value == "أدخل عنوان بريدك الإلكتروني") {

    خطأ = "الرجاء إدخال عنوان بريدك الإلكتروني. n" ؛
    } else if (!emailFilter.test(tfld)) { //test email for illegal characters

    خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
    } else if (fld.value.match (legalChars)) {

    خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
    }
    خطأ العودة
    }

  23. 32

    وظيفة التحقق من صحة البريد الإلكتروني (fld) {
    فار خطأ = ”” ؛
    var tfld = trim(fld.value); // value of field with whitespace trimmed off
    var emailFilter = / ^ [^ @ [] +[^ @.]]. [^ @]
    var legalChars = / [()،؛: \ ”[]] /؛

    إذا (fld.value == "أدخل عنوان بريدك الإلكتروني") {

    خطأ = "الرجاء إدخال عنوان بريدك الإلكتروني. n" ؛
    } else if (!emailFilter.test(tfld)) { //test email for illegal characters

    خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
    } else if (fld.value.match (legalChars)) {

    خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
    }
    خطأ العودة
    }

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

ما رأيك؟

يستخدم هذا الموقع نظام Akismet لتقليل الرسائل الضارة. تعرف كيف تتم معالجة بيانات تعليقك.