RegEx validate email for python

เขียนเว็บก็ที่ก็ต้องมานั่งเขียน RegEx เพื่อ validate email address ทุกที รำคาญมาก จดไว้ในนี้เสีย จะได้ไม่ต้องเสียเวลาไปค้นอีก

อย่างแรกคือกฎ วุ่นวายสับสนมากมาย ไปอ่านเพิ่มเติมกันเอาเองที่นี่ IETF แต่ถ้าเอาคร่าวๆก็ตามนี้

  • Alpha Characters a-z and A-Z (ASCII 97-122 and 65-90)
  • Numeric Characters (ASCII 48-57)
  • Exclamation Point ‘!’ (ASCII 33)
  • Number Sign ‘#’ (ASCII 35)
  • Dollar Sign ‘$’ (ASCII 36)
  • Percent Sign ‘%’ (ASCII 37)
  • Ampersand ‘&’ (ASCII 38)
  • Single Quote ”’ (ASCII 39)
  • Asterisk ‘*’ (ASCII 42)
  • Plus Sign ‘+’ (ASCII 43)
  • Minus Sign/Dash/Hyphen ‘-‘ (ASCII 45)
  • Forward Slash ‘/’ (ASCII 47)
  • Equals Sign ‘=’ (ASCII 61)
  • Question Mark ‘?’ (ASCII 63)
  • Caret ‘^’ (ASCII 94)
  • Underscore ‘_’ (ASCII 95)
  • Left Opening Brace ‘{‘ (ASCII 123)
  • Right Opening Brace ‘}’ (ASCII 125)
  • Tilde ‘~’ (ASCII 126)

หลังจากนั้นก็ได้ Pattern ตามนี้

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

ปล. เพิ่งรู้ว่าตัวอักษรประหลาดๆหลายตัวใช้ใน email Address ได้ด้วย
ปล2. นี่ปี 2018 ผ่านไปเกือบสิบปีก็ยังใช้ดีอยู่ Bookmark ไปใช้ได้อีกยาวๆ

 

Photo by Jefferson Santos on Unsplash