PDA

View Full Version : تشریح کد بررسی ساختار ایمیل



Sal_64
سه شنبه 17 اردیبهشت 1387, 13:26 عصر
string patternStrict = @"^(([^<>()[\]\\.,;:\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,}))$";
Regex reStrict = newRegex(patternStrict);


قطعه کد فوق همونطور که می بینید صحت ساختار ایمیل رو چک می کنه

میشه یه بخشی از اون رو توضیح بدید
مثلا این بخش


+ @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"

Sal_64
چهارشنبه 18 اردیبهشت 1387, 14:46 عصر
اساتید بزرگوار می تونن کمکی کنن ؟

Behrouz_Rad
چهارشنبه 18 اردیبهشت 1387, 15:22 عصر
باید با عبارات باقاعده آشنا باشی.
همش که طولانیه اما اون قسمتی که گذاشتی رو واست توضیح میدم.
در RegEx هر چیزی که در [] قرار بگیره به عنوان "یا" بهش نگاه میشه. در [] میشه بازه ای از حروف یا اعداد رو هم مشخص کرد.
مثلا [9-0] یعنی هر کدام از اعداد بین 0 تا 9 می تونه به عنوان کاراکتر بعدی قرار بگیره و یا [A-Za-z] یعنی هر کدوم از حروف بزرگ بین A تا Z یا حروف کوچک بین a تا z می تونه به عنوان کاراکتر بعدی در نظر گرفته بشه.
{} برای تعیین تعداد تکرار استفاده میشه. یعنی هر چیزی که قصد داشته باشی به تعداد معینی تکرار بشه.
یکی از سینتکس هاش به شکل {n,m} هست. n یعنی حداقل و m یعنی حداکثر. پس:


[0-9]{1,3}

یعنی حداقل یک و حداکثر سه عدد می تونه پشت سر هم قرار بگیره.

خطی که در موردش توضیح خواستی باعث میشه که در آدرس ایمیل بشه آدرس IP میل سرور رو وارد کرد. مثلا:


behrouz@213.125.78.44

که البته 3 قسمت اول IP در اون خط و قسمت آخرش در انتهای رشته وارد شده.

\ در RegEx برای اصطلاحا Escape کردن رشته استفاده میشه چون نقطه جزء نمادهای رزرو شده در RegEx و بیانگر یک کاراکتر دلخواه هست.


موفق باشید.

razavi_university
چهارشنبه 18 اردیبهشت 1387, 15:38 عصر
Regular Expressions عالمي داره
در MSDN جستجو كن
چند تايي كتاب هم واسش نوشته شده

Behrouz_Rad
چهارشنبه 18 اردیبهشت 1387, 15:42 عصر
البته به نظر من عالم خاصی نداره و خیلی ساده ست. خیلی بخوایم در موردش صحبت کنیم شاید در نهایت یک کتاب 100 صفحه ای هم نشه!

موفق باشید.

Sal_64
چهارشنبه 18 اردیبهشت 1387, 21:43 عصر
آقا لطف کردی


@"^(([^<>()[\]\\.,;:\s@\""]+"

در مورد اینها هم میتونید کمکی کنید ؟
مثلا اون @ اولیه چیه یا چرا تعداد \ و () اینقدر زیاده

razavi_university
یک شنبه 22 اردیبهشت 1387, 03:42 صبح
البته به نظر من عالم خاصی نداره و خیلی ساده ست. خیلی بخوایم در موردش صحبت کنیم شاید در نهایت یک کتاب 100 صفحه ای هم نشه!

یه ذره عالم رو داره:چشمک:
فرض کنین این کد ها بخواد با if و ... نوشته بشه:اشتباه:
بستگی به فونت کتاب هم داره:لبخند:

Behrouz_Rad
یک شنبه 22 اردیبهشت 1387, 12:08 عصر
آقا لطف کردی


@"^(([^<>()[\]\\.,;:\s@\""]+"

در مورد اینها هم میتونید کمکی کنید ؟
مثلا اون @ اولیه چیه یا چرا تعداد \ و () اینقدر زیاده

قربون شکلت، یک دفعه بگو بیا کل RegEx رو واسم توضیح بده دیگه! ;)

@ در #C برای Escape کردن رشته استفاده میشه. چون \ یک کاراکتر کنترلی هست و معنای خاصی داره، با گذاشتن @ در ابتدای رشته، اون رشته رو Escape می کنن.
اگر کاراکترهایی در [] قرار بگیرن یعنی "هر کدوم" از اون کاراکترها می تونن به عنوان کاراکتر بعدی ظاهر بشن. اگر در ابتدای اونها کاراکتر ^ قرار بگیره یعنی "هیچ کدوم" از اون کاراکترها نمی تونن به عنوان کاراکتر بعدی قرار بگیرن.
+ در RegEx به معنای "یک بار" یا "بیشتر" هست.
در نهایت عبارتی که گذاشتی مشخص می کنه که هیچ کدوم از کاراکترهایی که در [] قرار گرفتن به میزان یک بار یا بیشتر نمی تونن به عنوان کاراکتر بعدی قرار بگیرن.
پرانتز در RegEx علاوه بر اینکه برای دسته بندی یک گروه از رشته ها برای انجام عملی خاص بر روی اونها استفاده میشه، برای خوانایی بیشتر هم به کار میره

موفق باشید.

پ.ن: اونهایی که در دوره ی کارشناسی نرم افزار، درس نظریه ی زبان ها و ماشین ها رو پاس کردن، خیلی راحت می تونن مفهوم نمادهای RegEx رو درک کنن.

razavi_university
یک شنبه 22 اردیبهشت 1387, 14:31 عصر
پ.ن: اونهایی که در دوره ی کارشناسی نرم افزار، درس نظریه ی زبان ها و ماشین ها رو پاس کردن، خیلی راحت می تونن مفهوم نمادهای RegEx رو درک کنن.
راست مي گيا
استاد سر اين كلاس مي گفت ميشه با If پياده سازيشون كرد.:قهقهه:
من پيش خودم فكر مي كردم بايد يك راه بهتري هم باشه تا اينكه RegEx رو پيدا كردم:لبخند: