در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

چک کردن صحیح بودن یک ایمیل و شماره موبایل توسط Regular Expression

صحت ورود ایمیل توسط Regex

سلام دوستان

اگر شما نیز صاحب وبسایتی هستید ، حتماً برای ثبت نام کاربرانتان فیلد ایمیل باید پر شود ، و به علت اهمیت وجود صحیح ایمیل کاربران باید یک ایمیل معتبر وارد کنند اما برنامه نویسان چه کمکی میتوانند به صاحبان وبسایت ها کنند؟ اگر یک ایمیل را دلخواه و به قول خودمون الکی وارد کنند چه مکانیزمی برای کنترل صحیح بودن ایمیل وجود دارد ؟ جواب این است هیچ مکانیزمی وجود ندارد ولی برنامه نویسان فقط میتوانند کنترل کنند که ایمیل به صورت صحیح تایپ شود یعنی علامت @ حتماً داشته باشد وجود یک دات (.) برای ایمیل ضروری است و اینکه کجا این دات باشد مهم است مثلاً در ابتدای یک ایمیل هیچگاه کارکتر دات نمیتواند باشد یا کارکتر آندرلاین ( _ ) نمیتواند قبل از com. باشد و انواع روش هایی که میشود کنترل کرد این ایمل صحیح وارد شده باشد ، فیلد ایمیل برای مدیران سایت ها از اهمیت خاصی برخوردار است در تبلیغات وبسایتشان یا پیام های خصوصی یا وجود یک شخص به صورت حداقل حقیقی و... به هر حال شما حتماً وجود ایمیل را در وبسایت خود نیاز دارید. اگر میخواهید رسم این نمودار ها را ببینید و به صورت آنلاین با این تکنیک کار کنید لینک زیر میتواند برای شما مفید واقع گردد ، اکثر دانشجویان رشته کامپیوتر میدانند عبارات منظم یا (Regular Expressions) چیست و یه چه درد میخورد عبارات منظم مخصوصاً در رشته برنامه نویسی از اهمیت بالایی برخوردار است و حتماً میدانند این عبارات برای تعریف الگو در رشته ها به کار می روند . کاربرد این الگوها بیشتر در validation یا تعیین اعتبار سنجی رشته ها است. به عنوان مثال فرض کنید که در فرم ثبت نام در سایت خود مثلاً شما میخواهید کاربر شماره موبایل خود را وارد کند و میخواهید حداقل کنترل کنید که شماره موبایل خودش رو به صورت 11 کارکتر وارد کند و اصلاً کارکتر حرفی وارد نکند . برای تشخیص این که آیا عبارتی که کاربر به عنوان شماره موبایل وارد کرده است فرمت درست را دارد یا نه می توانید از عبارات منظم استفاده کنید که در لینک زیر در این خصوص بیشت توصیح داده شده است.

برای ایجاد این قابلیت و حتی کنترل داده های دیگر شما میتونید از تکنیک Regular Expression یا عبارات با قائده استفاده کنید در ادامه این تکنیک رو توضیح میدم و سپس مثال عملی رو خدمتتون میگم

یک سری کارکتر هایی هست که به تنهایی معنی نمیده ولی وقتی در کلاس System.Text.RegularExpressions.Regex.IsMatch قرار میگیرند از اهمیت برخوردار میشوند شاید کمی حفط کردنش سخت باشه ،ضمناً شاید یکی از مشکلترین کارهایی که به خصوص برنامه نویس ها با اون سر و کار دارند، ایجاد Regular Expressions جهت استفاده در برنامه ها هست. توسط لینک زیر شما میتونید اقدام به ساخت این عبارت ها کنید و اون عبارت ها رو تست کنید .

البته اگر دائماً بخواهید با این عبارات کار کنید به مرور این کارکتر ها برای شما معنی پیدا میکنه هر چند شما میتونید همیشه از کدی که در انتها قرار میدم برای ایمیل خودتون در برنامه تون استفاده کنید چون این ها تکه کد هایی هستند که نیازی به تغییر ندارد، در ادامه این کارکتر ها و وظیفه شون رو میگم خدمتتون.

/ آغاز و پايان توضيح قاعده اي (همیشه شروع و پایان توضیح های با قائده با کارکتر اسلش میباشد)

^ آغاز توضيح پيشرفته (در ابتدای عبارات پیچیده باقائده وجود این کارکتر الزامی است)

$ پايان توضيح پيشرفته (زمانی که از ^ استفاده شود در انتهای عبارت وجود دالر یا $ الزامی است)

نكته : اگر كاراكتري را خارج از توضيح پيشرفته قرار دهيم آنگاه حتي يك عدد از آن كاراكتر هم اگر در هر جا از رشته اصلي يافت شود مقدار صحيح را بر مي گرداند.

. ( دات ) معادل يك كاراكتر تعريف نشده يا مجهول

\ براي قرار دادن نقطه از بك اسلش نقطه استفاده مي كنيم(هر گاه خواستید از دات برای عبارات باقائده استفاده کنید ملزم به استفاده از بک اسلش \ هستید)

تعاريف زير فقط براي يك كاراكتر شرط مي گذارند اما مي توانيم بعدا بوسيله كاراكترهاي اقدام در تعداد آنها را گسترش دهيم

\w كاراكترهاي a...z A...Z 0...9 _ كه اصطلاحا مي گوييم كاراكترهاي استاندارد

نكته : به کوچکی یا بزرگی کارکتر ها دقت کنید

\W هر كاراكتري غير از موارد فوق

\d فقط يك عدد تك رقمي

\D محدوديت عدد يعني هر چيز غير از عدد

\A فقط كاراكتر خط بعد

\s فقط كاراكتر فاصله

\S محدوديت كاراكتر فاصله

\t فقط كاراكتر تب

\xf1 فقط كاراكتري از مجموعه كاراكترهاي استاندارد امريكايي كه شماره آن معادل اين عدد دو رقمي شانزده تايي باشد

\o31 يك كاراكتر از همان مجموعه بالا كه معادل اين عدد دو رقمي 8 تايي باشد

[abc] يك كاراكتر كه برابر يكي از كاراكترهاي داخل براكت باشد

[^abc] برابر هيچ كدام از كاراكترهاي داخل براكت نباشد

[a-f] برابر يكي از كاراكترهاي اي تا اف باشد

() بوسيله پرانتز مي توانيم دسته اي از تعاريف را در يك گروه جمع نماييم كه مي تواند براي يك يا چند كاراكتر باشد و بعدا تعداد دفعات آن را افزايش دهيم.

داخل براكت كلا بين كاراكترها (يا) برقرار است و اصلا نيازي به عبارات منطقي (يا) و (و) نيست

قسمت كاراكترهاي كليدي اقدام در تعداد , حال مي توانيم شرايط فوق را براي يك كاراكتر در داخل پرانتز تعريف نماييم و بعد از پرانتز(بعد از پرانتز) از علامتهاي زير استفاده كنيم تا تعداد كاراكترها براي تكرار تعريف شوند , البته در صورتي كه يك شرط فقط داشته باشيم مي توانيم از پرانتز استفاده ننماييم

** بررسي شرط تعريف شده براي هيچ كاراكتر تا هر تعداد كاراكتر

+ بررسي براي حداقل يك كاراكتر(يعني اگر كاراكتري يافت نشود مقدار غلط را بر ميگرداند)

? بررسي براي فقط يك كاراكتر يا هيچ كاراكتر

{m} بررسي براي فقط ام تعداد كاراكتر

{m,} بررسي براي حداقل ام تعداد كاراكتر

{m,n} بررسي براي حداقل ام و حداكثر ان تعداد كاراكتر

ضمناً جهت دیدن انواع و اقسام این علامت ها به سایت زیر رفته تا اطلاعات خود را در این ضمینه گسترش دهید

مثال بررسی شماره موبایل

(\+98|0)?9\d{9}

توسط تکه کد زیر شما میتونید مطمئن شوید کاربر شماره موبایلی با فرمت واقیرو برای شما ارسال کرده این شماره میتونه به 98+ شروع شه که اگر با این کارکتر شروع شود دیگر 0 نمیخواهد و حتی میتونه با 0 شروع شه که اگر این چنین باشد دیگر نمیتواند با 98+ شروع شود در ادامه شماره موبایل های کشور عزیزمون ایــــران پس از این کارکتر ها عدد 9 رو به همراه داره که وجودش اجباری هست سپس 9 کارکتر دیگه که میتونه از 0 تا 9 باشه در شماره موبایل باید باشه.

چک کردن صحیح بودن یک ایمیل و شماره موبایل توسط Regular Expression

مثال:بررسي يك ايميل

/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{1,3})$/

حداقل يك كاراكتر استاندارد - پرانتزباز فقط يك كاراكتر نقطه يا دش ميتواند باشد يا نباشد كه بعدش حداقل يك كاراكتراستاندارد باشد پرانتزبسته- كل پرانتز قبلي ميتواند براي چند بار تكرار شود يا نشود, كاراكتر ات ساين كه حتما فقط يكي باشد - حداقل يك كاراكتر استاندارد باشد - پرانتزباز فقط يك كاراكتر نقطه يا دش ميتواند باشد يا نباشد كه بعدش حداقل يك كاراكتر استاندارد باشد پرانتز بسته ، پرانتز قبل مي تواند براي چند بار تكرار شود يا نشود - پرانتزباز فقط يك كاراكتر نقطه كه بعدش بين يك تا سه كاراكتر استاندارد باشد - پرانتزبسته

بنابراين مثال های زیر طبق کد بالا میتواند صحیح یا غلط باشد

fa_khanlari@yahoo.com صحيح

fa_khanlari@yahoo.com.co صحيح

fa_khanlari@yah-oo.com صحيح

fa_ khanlari @yahoo-.com غلط

fa_ khanlari @yahoo.coma غلط

fa_ khanlari @-yahoo.com غلط

\r بازگشت خطي - كاربرد كمي دارد اما به جاي خود مهم است

\cX كاراكتر كنترل ايكس است

\b داخل براكت براي محدوديت لغت

\B داخل براكت براي عدم محدوديت لغت

\F براي فرم

\v تب عمودي

بررسی صحت ایمیل توسط regular expression


ابتدا یک Text Box با نام TextEmail در فرم ایجاد کنید سپس میتوانید در رویداد کلیک button تکه کد زیر رو قرار بدید

private void button1_Click(object sender, EventArgs e)
  {
            if (string.IsNullOrEmpty(TextEmail.Text))
            {
                MessageBox.Show("یک ایمیل معتبر وارد کنید","Error");               
            }
            if (System.Text.RegularExpressions.Regex.IsMatch(TextEmail.Text, @"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"))
            {
                chkEmail.Text = "                       ايميل معتبر است";
            //    ResultEmail.Text = "ايميل معتبر است";
            }
            else
            {
                chkEmail.Text = "                       ايميل معتبر نيست";
              //  ResultEmail.Text = "ايميل معتبر نيست";
            } 
   }

نویسنده : فرهاد خانلری

منبع : انجمن تخصصی فناوری اطلاعات ایران

کپی برداری با ذکر نام نویسنده و منبع مجاز خواهد بود

#آموزش_regular_expression #کنترل_ورود_داده_ها_در_برنامه #برنامه_نویسی_با_regular_expressions #آموزش_عبارات_با_قائده #بررسی_صحیح_بودن_یک_ایمیل #چک_کردن_ایمیل_در_برنامه #چک_کردن_صحیح_بودن_یک_ایمیل
2 نظر
علی  ورزشی

سلام . خیلی ممنون . یه سوال داشتم چه طوری میشه که از وجود خود ایمیل وارد شده هم اطمینان پیدا کنیم . چه روش هایی در این زمینه وجود دارد ؟

فرهاد خانلری

ببینید دوست من تمامی سرویس دهنده های ایمیل مثل گوگل ،یاهو، هات میل و .... ایمیل ها رو در بانک اطلاعاتی شون ذخیره میکنن که میفهمه که ایمیل farhad@fr.com صحیح هست یا خیر ، هیچ کسی جز همون سرویس دهنده که در دیتا بیس خودش میگرده و ایمیل مورد نظر رو پیدا میکنه نمیدونه ایمیل معتبر هست یا خیر، البته اگر راهی هم هست برای این موضوع بنده اطلاعای ندارم، تمامی ایمیل ها در جای هستند که عموم کاربران و حتی برنامه نویسان بهش دسترسی ندارند مگر همون سرویس دهنده ، پس پیشنهاد میشه شما کنترل کنید کاربر حداقل کارکتر درستی رو توی دیتا بیس شما وارد کنه ، من خودم گاهی اوقات برای اینکه مثلاً در نرم افزاری ایمیل ثبت کنم برای رجیستر کردن نرم افزار اگر ببینم با کارکتر های غیر واقعی قبول نمیکنه(چون برخی از نرم افزار ها هم این قابلیت رو برای رجستر شدن خودشون قرار دادن) خیلی راحت میام قوائد رو رعایت میکنم و تایپ میکنم as@as.com در این صورت شک ندارم که برنامه به درستی کارمو راه مینداره البته برخی از جاها رو دیدم که اسم تمام سرویس دهنده ها رو بعد از کارکتر @ اوردن و شما فکر میکنید که حتماً باید به درستی وارد کنید ولی کدشون رو که نگاه کنید میبینید که شما رو مجبور کردند بعد از کارکتر @ حتماً یکی از کلمات yahoo,gmail,hotmail,live,msn,aol,ymail,outlook و ... رو بیارید خب شاید کمی این روش عاقلانه تر باشه و درصد کاربرانی که مجبور هستند درست وارد کنند بیشتر از قبل میشه .

موفق باشید.

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....