تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ افضلی
آیا ریجکس‌ها هم بحث best practice رو دارن؟
کیوان علی محمدی حل شده توسط کیوان علی محمدی

سلام. من طبق آموزش‌ها این جلسه برای خودم این مسئله رو تعریف کردم که با ریجکس، ایمیل‌ها رو تشخیص بدم. چیزی که نوشتم: 

/\w+\.?\-?\w*@\w*\-?\w*?\.\w*/gi

حالا میخوام بدونم که این ریجکسی که نوشتم، باید بهش فکر بشه و یه حالت بهینه‌تر و خوانا‌تر براش نوشته بشه یا کلا وقتی ریجکس رو مینویسیم و تست میگیریم و درست کار میکنه، نیازی به تغییر نداره؟

اینو خوندم که تو بحث کلین کد و کامنت گذاری، همیشه بهتره که برای ریجکس ها، مثال توی کامنت نوشته بشه. این کامنت میتونه دلیلی باشه برای اینکه که بیشتر از این روی اون ریجکس کار نکنیم؟

سلام اگر بتونید خوانایی اون رو افزایش بدید که چه بهتر، مثلا کوتاه‌تر شدن اون ممکنه خوانایی رو افزایش بده و در نهایت اون کامنت برای افزایش خوانایی هست که کمک میکنه اگر تغییری نیاز بود سریع‌تر اعمال بشه. گذاشتن کامنت دلیل برای بی خیال شدن از بهبود اون regex نمی‌تونه باشه.

بهترین پاسخ
کیوان علی محمدی ۱۲ مهر ۱۴۰۰، ۰۹:۰۰

اصلا فکر کنم کوتاهی یا بلندی خیلی مساله نیست ، مساله اصلی کاربردی  بودن اون ریجکسه که واسه چی بکار میبریمش و چقدر خوب یا بهینه کار کنه ، ریجیکس‌های تایید ایمیل معمولا آماده شون تو سایت‌ها هست ، چند نمونه اش رو سرچ زدم و تو ادامه میزارم ، یه سایت هم هست به اسم https://emailregex.com که کلا ریجکس‌های تایید ایمیل برای همه زبان‌ها رو گذاشته.

 

این ریجکس در واقع استاندارد‌ترین ریجکس تایید ایمیله که به گفته سایتش 99.99 درصد مواقع به خوبی کار میکنه :

/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/

این هم یه ریجکس تایید ایمیل مخصوص جاوااسکریپت:

/^(([^<>()\[\]\\.,;:\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,}))$/
mahdi salimi ۱۵ مهر ۱۴۰۰، ۱۹:۴۳