דילוג לתוכן המרכזי
מודול 8 · שיעור 1 מתוך 429/32 בקורס~12 min
שיעורי מודול (1/4)

אימות מייל

אימות דוא"ל "נכון" הוא בעיה הרבה יותר קשה ממה שנראה: RFC 5322 הוא מפלצת. בפועל אנחנו בוחרים דפוס טוב מספיק זה מקבל מקרים נפוצים ודוחה את השגויים בעליל.

Code
Pattern: ^[\w.+-]+@[\w-]+(?:\.[\w-]+)+$
  • [\w.+-]+ -- חלק מקומי: אותיות, ספרות, _, ., +, -.
  • @ -- מפריד.
  • [\w-]+(?:\.[\w-]+)+ -- דומיין + TLD אחד לפחות מופרד על ידי ..

מה זה מקבל: mario.rossi@example.com, foo+bar@sub.example.co.uk, user_123@test-domain.io.

מה זה דוחה: mario@, @example.com, mario@example (ללא TLD), רווחים.

פשרות

הדפוס שלמעלה לא מקבל:

  • מחרוזות במרכאות "strange (things)"@example.com (RFC מאפשר להם).
  • דומיינים עם תווי Unicode (\u00fcber@m\u00fcnchen.de).
  • TLDs ארוכים מאוד שאינם עוברים את \w (למשל, בינלאומיים).

אם אתה צריך אותם, הרחב את הכיתה ל-\p{L} עם הדגל u, או האצל ל- ספרייה מתמחה.

פשרות ושיטות עבודה מומלצות לאימות דוא"ל

שום ביטוי רגולרי לא יכול להבטיח שכתובת דוא"ל אכן קיימת. דפוסים מורכבים מדי פוגעים בביצועים ואינם כוללים דומיינים חריגים אך תקפים. עדיף להשתמש בדפוס אימות פשוט כדי לדחות שגיאות הקלדה ברורות ולשלוח קוד אימות.

נסה את זה

פעילות גופנית#regex.m8.l1.e1
ניסיונות: 0טוען...

מזהה כל מייל בטקסט. השתמש בתבנית פשוטה: אותיות/ספרות/נקודות לפני ה-@, תחום עם נקודה אחת לפחות.

טוען עורך...
הצג רמז

הרחב את החלק המקומי ל-[\\w.+-]+ ואת הדומיין ל-[\\w-]+\\.[\\w.-]+ כדי לקבל מספר TLDs.

הפתרון זמין לאחר 3 ניסיונות

סקירת התרגיל

פעילות גופנית#regex.m8.l1.e2
ניסיונות: 0טוען...

לכוד את הדומיין (החלק שאחרי @) של כל אימייל כקבוצה בשם `dominio`.

טוען עורך...
הצג רמז

עטפו את החלק של הדומיין בקבוצה עם שם: (?<dominio>[\\w.-]+).

הפתרון זמין לאחר 3 ניסיונות

אתגר נוסף

פעילות גופנית#regex.m8.l1.e3
ניסיונות: 0טוען...

Find the domain part of an email (everything after `@`), excluding the `@` sign using lookbehind.

טוען עורך...
הצג רמז

השתמש במבט חיובי מאחור (?<=@) לפני מחלקת תו התחום.

הפתרון זמין לאחר 3 ניסיונות