دروس الوحدة (1/4)
التحقق من صحة البريد الإلكتروني
يعد التحقق من صحة البريد الإلكتروني "بشكل صحيح" مشكلة أصعب بكثير مما تبدو: RFC 5322 وحش. من الناحية العملية، نختار نمطًا جيدًا بما فيه الكفاية يقبل الحالات الشائعة ويرفض الحالات الخاطئة بشكل واضح.
Pattern: ^[\w.+-]+@[\w-]+(?:\.[\w-]+)+$[\w.+-]+-- الجزء المحلي: الحروف والأرقام،_،.،+،-.@-- فاصل.[\w-]+(?:\.[\w-]+)+-- النطاق + نطاق TLD واحد على الأقل مفصول بـ..
ما يقبله: mario.rossi@example.com، foo+bar@sub.example.co.uk،
محمي_INLINE_10.
ما يرفضه: mario@، @example.com، mario@example (بدون TLD)، مسافات.
المقايضات
النمط أعلاه لا يقبل:
- السلاسل المقتبسة
"strange (things)"@example.com(يسمح لها RFC). - النطاقات التي تحتوي على أحرف Unicode (
\u00fcber@m\u00fcnchen.de). - نطاقات TLD الطويلة جدًا التي لا تمر بـ
\w(مثل النطاقات الدولية).
إذا كنت في حاجة إليها، قم بتوسيع الفصل إلى \p{L} باستخدام العلامة u، أو قم بتفويض إلى
مكتبة متخصصة.
المقايضات وأفضل الممارسات للتحقق من صحة البريد الإلكتروني
لا يمكن لأي تعبير عادي أن يضمن وجود عنوان بريد إلكتروني بالفعل. تؤدي الأنماط شديدة التعقيد إلى تدهور الأداء وتستبعد النطاقات غير المعتادة ولكنها صالحة. من الأفضل استخدام نمط تحقق بسيط لرفض الأخطاء المطبعية الواضحة وإرسال رمز التحقق.
جربه
التعرف على كل البريد الإلكتروني في النص. استخدم نمطًا بسيطًا: أحرف/أرقام/نقاط قبل @، مع وجود نقطة واحدة على الأقل في المجال.
إظهار التلميح
قم بتوسيع الجزء المحلي إلى [\\w.+-]+ والمجال إلى [\\w-]+\\.[\\w.-]+ لقبول نطاقات TLD متعددة.
الحل متاح بعد 3 من المحاولات
تمرين المراجعة
التقط المجال (الجزء الذي يلي @) لكل بريد إلكتروني كمجموعة مسماة "dominio".
إظهار التلميح
لف جزء المجال في مجموعة مسماة: (?<dominio>[\\w.-]+).
الحل متاح بعد 3 من المحاولات
التحدي الإضافي
Find the domain part of an email (everything after `@`), excluding the `@` sign using lookbehind.
إظهار التلميح
استخدم نظرة خلفية إيجابية (?<=@) أمام فئة أحرف المجال.
الحل متاح بعد 3 من المحاولات