منذ فترة ، طرحت ملف مدقق قوة كلمة المرور باستخدام 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; } }
تتحقق الوظيفة من صحة محتويات البريد الإلكتروني الخاص بالمرشح. إذا فشلت المقارنة ، ينبثق تنبيه ويعيد التركيز مرة أخرى إلى حقل عنوان البريد الإلكتروني!
بالنسبة للنماذج التي تحتوي على عناوين بريد إلكتروني متعددة ، سيكون من الجيد إجراء class = ”emailaddress”. إذا كان لديك مكتبة prototype.js (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)) {
تنبيه (؟ يرجى تقديم عنوان بريد إلكتروني صالح؟) ؛
البريد الإلكتروني.
صالح = خطأ ؛
}
})؛
عودة صالحة
شكرا ادي! سأحتاج إلى معرفة المزيد عن الفصول وجافا سكريبت!
كان مثال دوج الأصلي رائعًا ، لكن هذا المثال متجمد! لم أكن أعرف أنه يمكنك معالجة العناصر التي لها فئة بهذه الطريقة ، والصيغة الوظيفية حلوة.
أدي وفريقه مذهلون!
جميل ، يمكنني دائمًا الاعتماد عليك في بعض النصوص الرائعة الشريرة! 🙂
شكرا توني!
تعجبني الفكرة ، لكني سأكون مترددًا في اعتماد هذا التعبير العادي المحدد دون وصف عناوين البريد الإلكتروني القانونية التي لا يقبلها والعناوين غير القانونية التي يسمح بها.
للحصول على مثال للتعبير النمطي الذي يقوم بعمل لائق إلى جانب توضيح الحالات التي لا يغطيها ، انظر هذا:
http://www.regular-expressions.info/email.html
أفضّل شخصيًا تغطية معظم الحالات البسيطة وإصدار تحذير لكل شيء آخر بدلاً من رفضه. إذا كان بوب يريد حقًا أن يقدم bob@com.museum بدلا من bob@museum.comلماذا لا تدعه؟
مرحبا ريج ،
يمكنك اختبار Regex باستخدام ملف Regex Tester عبر الإنترنت.
أيضًا ، هناك بالتأكيد الكثير الذي يمكن القيام به إذا كنت ترغب في ضمان وجود ملف عنوان البريد الإلكتروني صالح وفقًا لـ RFC.
هناك عدة أسباب لعدم السماح لشخص ما بإدخال عنوان بريد إلكتروني غير صالح:
1. سوف يتضايقون منك عندما لا يصل البريد الإلكتروني الذي توقعوه - بغض النظر عما إذا كان هذا هو خطأك أم لا ، فقد تم إدخال العنوان بشكل غير صحيح.
2. إذا كان com.museum نطاقًا صالحًا ، ولنقل Yahoo! تشغيله - أي عنوان بريد إلكتروني ارتد سيكون له تأثير سلبي على سمعة شركتك لتسليم البريد الإلكتروني. قد يؤدي ذلك إلى حظر جميع رسائل البريد الإلكتروني الخاصة بشركتك.
3. إذا سمح لك مزود خدمة البريد الإلكتروني بالدخول bob@com.museum، ستدفع أيضًا مقابل كل بريد إلكتروني يتم إرساله إلى عنوان البريد الإلكتروني هذا حتى إلغاء الاشتراك في هذا العنوان بسبب الارتداد. أود الابتعاد عن أي برنامج ESP يسمح باستخدام عنوان بريد إلكتروني غير صالح مثل هذا - إنهم يأخذون أموالك فقط!
شكرا لزيارتكم!
دوغ
ممتاز ، فقط ما احتاجه!
هناك طريقة أبسط بكثير لكتابة التعبير:
var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
- مع المعدل النهائي / لا توجد حاجة للإشارة إلى نطاق الأحرف الكبيرة.
- أنا لا أعرف أي شيء TLD مع وجود أرقام فيه.
في ملاحظة جانبية ، أسمح بـ TLD مع ما يصل إلى 6 أحرف ؛ يصل الأشخاص الجدد بانتظام وأنت لا تعرف أبدًا (حسنًا ، قد يكون هناك أرقام في المستقبل ، كما أعلم).
مرحبا هناك،
أرغب في استخدام هذا في نموذج موجود في الوقت الفعلي ، ولكن لا يبدو أن هذا يتحقق في الوقت الفعلي مثل مدقق قوة كلمة المرور ...
أو ، هل أنا مجرد جاهل ، وهذا ليس العمل بالنسبة لي؟
راجع للشغل ، أنا حقًا أحب ما يحدث هنا ، فبرامجك التعليمية بسيطة جدًا ، وسأقوم بالتأكيد بوضع إشارة مرجعية على هذا ...
مجرد لمعلوماتك ؛ لم أجرب حل Ade لكن النمط أعلاه لا يتحقق من صحة عناوين البريد الإلكتروني التي تحتوي على فواصل عليا فيها .. (على سبيل المثال ، Mike.O'Hare@Whatever.com). الفواصل العليا صالحة وفقًا لـ RFC 2821/2822 -> http://www.faqs.org/rfcs/rfc2822.html
HTH،
سانجاي
كما أنه لا يبدو أنه يتعامل مع حرف الجمع ، وهو صالح.
انظر: http://www.dominicsayers.com/isemail/
بشكل أكبر ، هذه مشكلة رئيسية في رمز القص واللصق ، وهي مشكلة تستحق مناقشة كاملة في حد ذاتها.
@ robbyslaughter.com
انت نوتس ..
انها تعمل بشكل جيد ..! @
سيكون على ما يرام إذا تمكنا من إيجاد حل لتجنب عناوين البريد الإلكتروني المزيفة على التعليقات على WordPress
مجرد تصحيح بسيط: التعبير النمطي به علامة () + إضافية في النهاية. يجب أن تقرأ:
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$
مع أول واحد ، سيتم قبول أي TLDs طويلة (وهو ليس خطأ جوهريًا كما أشار الآخرون ، ولكن إذا كانت هذه هي النية ، فيمكن تقصير التعبير).
هل يمكنك من فضلك شرح التعبير العادي لهذه المدونة وكيف تعمل؟ أيضًا حول .test - هل .test عبارة افتراضية في جافا سكريبت للتحقق من الأشياء كما فعلت في الكود أعلاه؟
هذا رمز قصير لتعبير البريد الإلكتروني-
وظيفة التحقق من صحة البريد الإلكتروني (المعرف)
{
var emailPattern = / ^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4،XNUMX}$/؛
إرجاع emailPattern.test (معرف) ؛
}
ديباك راي
فاراناسي
هذا رمز قصير لتعبير البريد الإلكتروني-
وظيفة التحقق من صحة البريد الإلكتروني (المعرف)
{
var emailPattern = / ^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4،XNUMX}$/؛
إرجاع emailPattern.test (معرف) ؛
}
ديباك راي
فاراناسي
شكرا جزيلا عمي. لقد ساعدني ذلك كثيرًا
أماندا
شكرا على الكود!
شكرًا ، ولكن هناك خطأ في هذا التعبير العادي. لست خبيرًا في regex ، لكنني حاولت استخدام البريد الإلكتروني:
اختبار @ اختبار
وتجاوزت regex… لاحظت أنه يفتقر إلى الهروب من "." لذلك ينبغي أن يكون:
/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
أنا أتدحرج مع
/ ^\\w+([\\.-]؟\\w+)*@\\w+([\\.-]؟\\w+)*(\\.\\w{2,3،XNUMX})+$ /
وماذا عن .info؟
أوه اللعنة ... منذ 3 سنوات؟ :س
حسنًا ، هذا مجرد فحص تقريبي ولكنه ليس دقيقًا بنسبة 100٪ ، على سبيل المثال ، سيكون هذا جيدًا john_doe. @ gmail.com وهو في الواقع ليس عنوان بريد إلكتروني صالحًا (لا يُسمح بالنقطة كحرف أخير في الجزء المحلي من البريد الإلكتروني).
كما أنها تقبل john…doe@gmail.com وهو أيضًا غير صالح لأنه لا يمكن أن يكون هناك أكثر من نقطة واحدة في التسلسل.
هذه فقط بعض العيوب التي لاحظتها للوهلة الأولى.
إن نيتي ليست تقريعًا فقط للإشارة إلى ذلك في حالة ما إذا كان شخص ما يخطط لاستخدام هذا كتحقق أمني - ليس آمنًا بدرجة كافية.
للحصول على معلومات حول عناوين البريد الإلكتروني الصحيحة تحقق من ذلك: http://en.wikipedia.org/wiki/E-mail_address
ديباك ،
في الواقع ، أعتقد أنك بحاجة إلى تطبيق مهرب للنقطة ("."). لذا ، يجب أن تكون وظيفتك ، بدلاً من ذلك:
وظيفة التحقق من صحة البريد الإلكتروني (المعرف)
{
var emailPattern = / ^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4،XNUMX}$/؛
إرجاع emailPattern.test (معرف) ؛
}
خلاف ذلك ، فإن النقطة تعني "أي حرف". أعتقد أن مثل هذه الشخصيات الخاصة بحاجة إلى الهروب.
التحيات،
فيديريكو
وظيفة التحقق من صحة البريد الإلكتروني (fld) {
فار خطأ = ”” ؛
var tfld = تقليم (fld.value) ؛ // قيمة الحقل مع قطع مسافة بيضاء
var emailFilter = / ^ [^ @ [] +[^ @.]]. [^ @]
var legalChars = / [()،؛: \ ”[]] /؛
إذا (fld.value == "أدخل عنوان بريدك الإلكتروني") {
خطأ = "الرجاء إدخال عنوان بريدك الإلكتروني. n" ؛
} else if (! emailFilter.test (tfld)) {// اختبار البريد الإلكتروني للأحرف غير القانونية
خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
} else if (fld.value.match (legalChars)) {
خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
}
خطأ العودة
}
وظيفة التحقق من صحة البريد الإلكتروني (fld) {
فار خطأ = ”” ؛
var tfld = تقليم (fld.value) ؛ // قيمة الحقل مع قطع مسافة بيضاء
var emailFilter = / ^ [^ @ [] +[^ @.]]. [^ @]
var legalChars = / [()،؛: \ ”[]] /؛
إذا (fld.value == "أدخل عنوان بريدك الإلكتروني") {
خطأ = "الرجاء إدخال عنوان بريدك الإلكتروني. n" ؛
} else if (! emailFilter.test (tfld)) {// اختبار البريد الإلكتروني للأحرف غير القانونية
خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
} else if (fld.value.match (legalChars)) {
خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
}
خطأ العودة
}
وظيفة التحقق من صحة البريد الإلكتروني (fld) {
فار خطأ = ”” ؛
var tfld = تقليم (fld.value) ؛ // قيمة الحقل مع قطع مسافة بيضاء
var emailFilter = / ^ [^ @ [] +[^ @.]]. [^ @]
var legalChars = / [()،؛: \ ”[]] /؛
إذا (fld.value == "أدخل عنوان بريدك الإلكتروني") {
خطأ = "الرجاء إدخال عنوان بريدك الإلكتروني. n" ؛
} else if (! emailFilter.test (tfld)) {// اختبار البريد الإلكتروني للأحرف غير القانونية
خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
} else if (fld.value.match (legalChars)) {
خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
}
خطأ العودة
}
وظيفة التحقق من صحة البريد الإلكتروني (fld) {
فار خطأ = ”” ؛
var tfld = تقليم (fld.value) ؛ // قيمة الحقل مع قطع مسافة بيضاء
var emailFilter = / ^ [^ @ [] +[^ @.]]. [^ @]
var legalChars = / [()،؛: \ ”[]] /؛
إذا (fld.value == "أدخل عنوان بريدك الإلكتروني") {
خطأ = "الرجاء إدخال عنوان بريدك الإلكتروني. n" ؛
} else if (! emailFilter.test (tfld)) {// اختبار البريد الإلكتروني للأحرف غير القانونية
خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
} else if (fld.value.match (legalChars)) {
خطأ = "الرجاء إدخال عنوان بريد إلكتروني صالح. n" ؛
}
خطأ العودة
}
تقليم وظيفة (ق)
{
إرجاع s.replace (/ ^ s + | s + $ /، ") ؛
}
تقليم وظيفة (ق)
{
إرجاع s.replace (/ ^ s + | s + $ /، ") ؛
}
"التركيز" وظيفة ، يجب أن تكون:
email.focus ()
"التركيز" وظيفة ، يجب أن تكون:
email.focus ()
رهيبة
يعمل مثل الأحجار الكريمة .. استخدام رائع لتعبيرات reg في جافا سكريبت ...
انها صدع في جوهرة ...
سيتم قبول العنوان "mmm @ mmm..com". لكن النقطتين معًا غير صالحة.
أولاد ، استخدم. لا يتطلب أي تحقق من JS.
ولكنه يعمل فقط مع المتصفحات الحديثة. لسوء الحظ ، لم يلحق العالم بالركب بعد. -
مرسل من Mailbox لأجهزة iPhone