آیا ریجکس ها هم بحث best practice رو دارن؟

پرسیده شده
فعالیت 912 روز پیش
دیده شده 454 بار
1

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

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

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

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

فایل پیوست

محمد افضلی
محمد افضلی

9 مهر 00

1
حذف شده

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

فایل پیوست

کیوان علی محمدی

توسط

کیوان علی محمدی

12 مهر 00

1
حذف شده

اصلا فکر کنم کوتاهی یا بلندی خیلی مساله نیست ، مساله اصلی کاربردی  بودن اون ریجکسه که واسه چی بکار میبریمش و چقدر خوب یا بهینه کار کنه ، ریجیکس های تایید ایمیل معمولا آماده شون تو سایت ها هست ، چند نمونه اش رو سرچ زدم و تو ادامه میزارم ، یه سایت هم هست به اسم 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

توسط

mahdi salimi

15 مهر 00

0
حذف شده

سلام.

این تاپیکو الان دیدم، ریجکسی که نوشتید باید زوایای بیشتریو در نظر بگیره.

برای مثال ایمیل های زیر نباید فرمت صحیح یک ایمیل باشن ولی ریجکسی که نوشتید، ولید تشخیص میده:

[email protected]
test@_example.
[email protected]
test@________-example.
____test__-@_-___.

الان این ایمیلو هم ببینید: (ریجکس ایمیلو valid تشخیص میده)

__-___@__-___.___

نکته دیگه، آخرین قسمت دامین معمولا حداقل دو کاراکتری هستن ولی در این ریجکس یک کاراکتر هم ولید میشه.
نکته بعدی اینکه برای ساخت ریجکس برای ایمیل، با علامت های ^ و $ ابتدا و انتهارو باید مشخص کنید تا بخشی از رشته رو در نظر نگیره.(حتما علامت $ در انتهای ریجکس بیارید)

نام ایمیل معمولا خط تیره(-) نداره ولی در نام دامین میتونه وجود داشته باشه.

فرمت ایمیل به این شکل هم میتونه باشه و ریجکس باید بعنوان یک ایمیل ولید بشناسه:

[email protected]

این موارد هایی که گفتم حداقل چیزهاییه که ی ایمیل استاندارد باید داشته باشه.

فایل پیوست

محسن موحد

توسط

محسن موحد

11 آبان 00