مرکزی مواد پر جائیں
ماڈیول 8 · سبق 1 از 4کورس میں 29/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 انہیں اجازت دیتا ہے)۔
  • یونیکوڈ حروف والے ڈومینز (\u00fcber@m\u00fcnchen.de)۔
  • بہت طویل TLDs جو پاس نہیں ہوتے ہیں \w (مثال کے طور پر انٹرنیشنلائزڈ)۔

اگر آپ کو ان کی ضرورت ہو تو، کلاس کو \p{L} تک u پرچم کے ساتھ وسیع کریں، یا کسی کو تفویض کریں خصوصی لائبریری.

ای میل کی توثیق کے لیے ٹریڈ آف اور بہترین طریقے

کوئی ریجیکس اس بات کی ضمانت نہیں دے سکتا کہ ای میل ایڈریس اصل میں موجود ہے۔ حد سے زیادہ پیچیدہ پیٹرن کارکردگی کو کم کرتے ہیں اور غیر معمولی لیکن درست ڈومینز کو خارج کر دیتے ہیں۔ واضح ٹائپ کی غلطیوں کو مسترد کرنے اور تصدیقی کوڈ بھیجنے کے لیے ایک سادہ توثیق کا نمونہ استعمال کرنا بہتر ہے۔

اسے آزمائیں

ورزش#regex.m8.l1.e1
کوششیں: 0لوڈ ہو رہا ہے…

متن میں ہر ای میل کو پہچانیں۔ ایک سادہ پیٹرن کا استعمال کریں: @ سے پہلے حروف/ہندسے/نقطے، کم از کم ایک ڈاٹ کے ساتھ ڈومین۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

متعدد TLDs کو قبول کرنے کے لیے مقامی حصے کو [\\w.+-]+ اور ڈومین کو [\\w-]+\\[\\w.-]+ تک وسیع کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش کا جائزہ لیں۔

ورزش#regex.m8.l1.e2
کوششیں: 0لوڈ ہو رہا ہے…

ہر ای میل کے ڈومین (@ کے بعد کا حصہ) کو بطور نامزد گروپ `ڈومینیو` کیپچر کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

ڈومین کے حصے کو ایک نامزد گروپ میں لپیٹیں: (?<dominio>[\\w.-]+)۔

3 کوششوں کے بعد حل دستیاب ہے۔

اضافی چیلنج

ورزش#regex.m8.l1.e3
کوششیں: 0لوڈ ہو رہا ہے…

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

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

ڈومین کریکٹر کلاس کے سامنے ایک مثبت نظر (?<=@) کا استعمال کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔