سرمایه گذاری متفاوت در سال نو 🍎🌱 ۳۵٪ تخفیف نوروزی ➕ حضور رایگان در مسترمایند نخبگان صنعت نرم‌افزار 💻✅
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ محمد علی
مشکل RegExp
یلدا محصلی حل شده توسط یلدا محصلی

من در این کد چطور یک الگوریتم صحیح وارد کنم تا کاربر وقتی ایمیل خود را وارد کرد در صورت صحیح نبودن ایمیل خطا بدهد؟ if (!controlleremail.text.contains(RegExp(

                   "^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"

                  ))) این الگوریتم صحیح اش است ولی این الگوریتم تو زبان پایتون جواب می‌ده ولی وقتی میارمش تو فلاتر باید ببرمش توی RegExp و وقتی میارمش توی این خطا هایی بهم می‌ده چه جوری صحیح کنمش؟

برای تصحیح regEx تون میتونید از ابزارهای هوش مصنوعی کمک بگیرید. مثلا:

 

برای استفاده از الگوریتم ایمیل به درستی در فلاتر با استفاده از RegExp باید به چند نکته توجه کنید:

در فلاتر به جای استفاده از \/ باید از \\ برای escape کردن کاراکتر / استفاده کنید.
همچنین، بعضی از کاراکترها در عبارت منظم نیاز به escape شدن دارند.
در کد شما، باید این تغییرات را اعمال کنید. در اینجا یک نسخه اصلاح‌شده از عبارت منظم برای استفاده در فلاتر آورده شده است:

if (!controlleremail.text.contains(RegExp(
 r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"
))) {
 // پیام خطا
}

تفاوت اصلی این است که در فلاتر برای استفاده از رشته‌های متنی به عنوان الگو در RegExp باید از r"" (raw string) استفاده کنید تا نیازی به escape کردن زیاد کاراکترها نباشد. این تغییر به جلوگیری از بروز خطا کمک می‌کند.

حالا اگر کاربر ایمیل اشتباهی وارد کند، می‌توانید به او پیامی مبنی بر اشتباه بودن ایمیل نمایش دهید.

 

تست کنید و درصورت دلخواه نبودن نتیجه با ابزارها تعامل داشته باشید.

بهترین پاسخ
یلدا محصلی ۱۳ بهمن ۱۴۰۳، ۱۳:۰۴