رد جديد  مشاركة جديدة 
Regular Expression --2 - دروس سى شارب C# - دروس السى شارب C# (Regular Expression --2 دروس سى شارب C#)
الكاتب الرسالة
صور سيارات رووووووعه
الحريف
عضو مسجل خطر


المشاركات : 267
مجموعة : مسجل خطر
الإنتساب : Sep 2007
الحالة : غير متصل
السمعة : 0
الرد : #1
Regular Expression --2 - دروس سى شارب C# - دروس السى شارب C#

Regular Expression --2 - دروس سى شارب C# - دروس السى شارب C#
Regular Expression --2

<!-------------------><!--مقطع البدايه----->

<!--------------------><!--الخبر الرئيسي----->
[CENTER ALIGN=CENTER]بسم الله الرحمن الرحيم










استكمالا للدرس السابق والذي تحدثنا فيه عن معنى الـ Regular Expression





وكيفية إنشائها والاستفادة منها , والدوال التي تستخدم للمقارنة (Match() – Matches





()
), في هذا الدرس سنتعرف على عدد أكبر من الرموز و التي توفر الاستخدام الأقوى للـ Regular Expression





.







في العبارة








(@"J



.*d



[0-35-9]-dd-dd



") بالدرس السابق نلاحظ وجود * والتي تسمى هي و إشارة الــ + و الـ ؟ بـ quantifier





والجدول التالي يوضح معنى استخدام كل منها.



[CENTER ALIGN=CENTER]




[LEFT ALIGN=RIGHT] Quantifier
Matches :





[/LEFT ALIGN]

[/CENTER ALIGN]

[LEFT ALIGN=RIGHT]



[LEFT ALIGN=RIGHT]




[LEFT ALIGN=RIGHT] [/LEFT ALIGN]
الآن سنقوم بعمل Windows





Application





لبرنامج يعمل كواجهة يدخل فيها المستخدم بياناته وبواسطة الـ Regular expression





سنضع شروطا لكل مدخل منها ..












شاهد مخرجات البرنامج أولا ...!















في البرنامج الأخير بالدرس السابق كنا قد بحثنا عن substrings





التي تتطابق مع الـ Regular expression





, ولكن في هذا المثال نريد أن نتأكد من أن البيانات التي يقوم المستخدم بكتابتها تتوافق مع الـ Regular expression





التي قمنا بكتابتها وفقا لشروطنا و هذه أحد استخدامات الـ
Regular Expression









الأوامر التالية مكتوبة عند حدث النقر:




















عند ضغط المستخدم على ok





سيقوم البرنامج أولا في الأسطر(263 - 275) بالتأكد من أن جميع الحقول ممتلئة وغير فارغة وذلك قبل التحقق من البيانات المدخلة فإذا كان واحد أو أكثر من الحقول فارغا سوف يصدر البرنامج عندها رسالة خطأ للمستخدم (الأسطر 268-269 ).





ثم في السطر (272) تم استدعاء الدالة
Focus





()
من الكلاس TextBox





, و هذه الدالة تضع المؤشر على الـ TextBox





.




الذي استدعى هذه الدالة.
وبعد ذلك في السطر (274) return




التي تقوم بإنهاء حدث النقر Event Handler











أما إذا لم يكن هناك أي حقل فارغ فسيبدأ البرنامج بالتحقق من
المدخلات
, ابتداء من السطر (277):



أولا نأخذ حقل الـ Last





Input







الأسطر(277 - 286): للتأكد من صحة كتابة المعلومات الموجودة به.

هنا نلاحظ طريقة أخرى نوعاً ما في كتابة الـ Regular Expression









انظر السطر (278):







Regex.Match





(
this





.
textBox1.Text,@"^[A-Z][A





-
Za





-
z





]*$")








بكتابة اسم الكلاس في البداية Regex





يليه اسم الدالة Match





وهنا نرسل بارامترين لها الأول هو النص الذي نريد أن نجري عليه الاختبار , والثاني هي الـ Regular Expression









التي سنفرضها . ففي الشرط أتبعنا الجملة السابقة بالخاصية success





وهذه الخاصية تعود بأحد قيمتين إما true or false





,فإذا تطابقت قيمة المدخل last name





مع الـ Regular





Expression





ستعود الخاصية success





بالقيمة true





وما عدا ذلك false





, ولا حظ وجود علامة النفي ! قبل الشرط أي أنه إذا كانت نتيجة الشرط false





في هذه الحالة فقط سيتم تنفيذ الأسطر (280 - 285), أما إذا كان
true















سينتقل لإجراء الاختبار على الحقل الذي يليه .

ستستمر

هذه العملية حتى يتحقق من جميع الحقول أو حتى تعود الدالة
Succes





بالقيمة
false




















عندها سيرسل رسالة خطأ.

و سنستخدم هذا الأسلوب مع كل حقل من الحقول الأخرى ولكن الاختلاف سيكون في
البارمترين
المرسلة للدالة.

بقي أن نفصل معنى "^[A-Z][A




-
Za





-
z





]*$"
:



الجديد فيها هي العلامتين $ و ^ الموجودة في بداية ونهاية الـRegular expression









لتفهم معنى الرمزين على سبيل المثال في خانة Last Name





سنقبل بالاسم "Osama





" ولكن لن نقبل اسما كهذا "@











#
Osama





", يتم إنجاز ذلك بواسطة كتابتنا للرمز ^ في بداية الـ Regular





Expression





والعلامة $ في نهاية الـ Regular





Expression









عادة تستخدم العلامة ^ عندما نريد وضع شرط لمدخل أو نص يجب فيه الابتداء بشيء معين أو العلامة $ عندما نريد النص أن ينتهي
بشئ
معين و هي مفيدة جدا في مثل حالتنا هذه.

وبعد أن تعرفنا على معنى الرمزين ^ و $ سيكون معنى الـ Regular Expression




هنا هي:أن أول حرف يشترط أن يكون capital





[A-Z





]
أما بقية الحروف فممكن تكون capital or small





[A





-
Za





-
z





]
والعلامة * تدل على أن الحروف التالية [A





-
Za





-
z





]







قد يكون عددها من 0 فما أكثر.

إذنففي last





name













المفترض أن تبدأ بحرف كبير واحد ثم بقية الحروف كيفما أراد المستخدم وعددها غير محدود.




<SHAPETYPE id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><STROKE joinstyle="miter"> </STROKE> <F eqn="if lineDrawn pixelLineWidth 0"> </F> <F eqn="sum @0 1 0"> </F> <F eqn="sum 0 0 @1"> </F> <F eqn="prod @2 1 2"> </F> <F eqn="prod @3 21600 pixelWidth"> </F> <F eqn="prod @3 21600 pixelHeight"> </F> <F eqn="sum @0 0 1"> </F> <F eqn="prod @6 1 2"> </F> <F eqn="prod @7 21600 pixelWidth"> </F> <F eqn="sum @8 21600 0"> </F> <F eqn="prod @7 21600 pixelHeight"> </F> <F eqn="sum @10 21600 0"> </F> <DIVATH o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"> </DIVATH>
<LOCK aspectratio="t" v:ext="edit"> </LOCK></SHAPETYPE> <SHAPE id=_x0000_i1025 style="WIDTH: 22.5pt; HEIGHT: 22.5pt" type="#_x0000_t75" alt=""><IMAGEDATA o:href="http://www.c4arab.com/images/lessons/design/flash/flashimages/18.gif" src="file:///C:\DOCUME~1\abeer\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"> </IMAGEDATA></SHAPE>
ننتقل للـ First





name





:الأسطر (288 -297) والشرط الخاص به شبيه جدا بشرط الحقل السابق.








<SHAPE id=_x0000_i1026 style="WIDTH: 22.5pt; HEIGHT: 22.5pt" type="#_x0000_t75" alt=""><IMAGEDATA o:href="http://www.c4arab.com/images/lessons/design/flash/flashimages/18.gif" src="file:///C:\DOCUME~1\abeer\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"> </IMAGEDATA></SHAPE>
ننتقل لحقل الـ Address





: الأسطر (299 -308 )



بالنسبة للـ Regular expression





الخاصة بها :











"^[0-9]+
s+([A





-
Za





-
z]+|[A





-
Za





-
z]+s[A





-
Za





-
z





]+)$"





عرفنا الآن فائدة العلامتين $^ .
أما بالنسبة للعلامة | فهي تدل على أنه يقوم بتمرير أي من التعبيرين يمين ويسار هذه الاشارة مثلا لو كتبنا hello




(
ahmed





|
osama





)
بداخل الـ Regular expression







فهنا هي تمرر كل من الجملتين التاليتين:









hello





ahmed





,
hello





osama









نعود للجملة











"^[0-9]+
s+([A





-
Za





-
z]+|[A





-
Za





-
z]+s[A





-
Za





-
z





]+)$"




نريد العنوان يبدأ برقم أو أكثر











^[0-9]+
ولو كتبنا *











^[0-9]




لكان معناه أن العنوان قد يبدأ برقم وقد لا يبدأ به ."راجع الجدول أول الدرس"



ثم whitespace





واحدة أو أكثر





s





+




ثم يمرر بعد ذلك أحد الاحتمالين التاليين :
**
كلمة
حروفها هي




[A-
Za
-z]




تبدأ بحرف فما أكثر.




[A-
Za
-z]+





** كلمة حروفها هي



[A-
Za
-z]




تبدأ بحرف فما
أكثر ثم

whitespace



واحدة وبعدها كلمة حروفها هي




[A-
Za
-z]




تبدأ بحرف فما أكثر.




[A-
Za
-z]+
s[
A-
Za
-z]+


على هذا الأساس فكل من العناوين التالية مقبولة :





[LIST]
[*]"



10
broadway




"



[*]"



10 Main street




"









ننتقل للحقلين
city and
state



:


الأسطر (310 - 330)




بالنسبة
للـ
Regular expression



الخاصة
بها
:




"^([A-
Za
-z]+|[A-
Za
-z]+s[A-
Za
-z]+)$"





فكلاهما يمرر أحد الاحتمالين

:

**
كلمة
حروفها هي




[A-
Za
-z]






تبدأ بحرف فما أكثر.


** كلمة حروفها هي



[A-
Za
-z]




تبدأ بحرف فما
أكثر ثم

whitespace



واحدة وبعدها كلمة حروفها هي




[A-
Za
-z]






تبدأ بحرف فما أكثر.





والـ
ZIP
code


:

الأسطر (332 - 341)




"^
d{
5}$"

الشرط الوحيد فيه أن يتكون المدخل من 5 أرقام فقط




{5}




.










أما رقم
الهاتف:

الأسطر (343 - 352)










^[

1-9]d{2}-[1-9]d{2}-d{4}$"





"


فنريده على الصيغة xxx-
yyy-yyyy





وأول رقم من
x



و أول رقم من
الـ
y





يجب أن لا يكون مساويا للصفر.






[1-9]





: أي رقم ما عدا الصفر .




d{2}




: معناه أي رقمين .

وإذا كانت جميع الحقول تحتوي
على
قيم صحيحة عندها سينتهي تنفيذ البرنامج...!وستصدر الرسالة ("
thank you !!










")




Regular Expression --2 - دروس سى شارب C# - دروس السى شارب C#
*


Matches 0 or more character.






+




Matches 1 or more character.




?




Matches 0 or 1 character




{n}



Matches exactly n
charachter





{n,}




Matches at least n character.




{
n,m
}



Matches between n and m (inclusive) character.


^



Beginning of a string or beginning of a
newline
هنا تعني بداية السطر أو بداية النص



$



End of a string before a
newline
character or at the end of the line




تدل على نهاية النص



09-14-2007 10:51 PM
أرسل بريد للمستخدم إعرض جميع مشاركات العضو إقتبس الرسالة فى رد

عالم السيارات العاب سيارات

اربح من الفوركس شهاده دراسيه عبر الانترنت اتصل من الكمبيوتر مجانا
الحريف
عضو مسجل خطر


المشاركات : 267
مجموعة : مسجل خطر
الإنتساب : Sep 2007
الحالة : غير متصل
السمعة : 0
الرد : #2
RE: Regular Expression --2 - دروس سى شارب C# - دروس السى شارب C#

منقول

09-14-2007 10:52 PM
أرسل بريد للمستخدم إعرض جميع مشاركات العضو إقتبس الرسالة فى رد
رد جديد  مشاركة جديدة 
Regular Expression --2 - دروس سى شارب C# - دروس السى شارب C#

إحتمالات التقييم ...
المشاركة : الكاتب الردود : المشاهدات : آخر رد
  الرجااااااااء المساعدة وبسرعة musabxbs 1 301 03-06-2008 11:27 PM
آخر رد: عاشقة السعاده
  Regular Expression --1 - دروس سى شارب C# - دروس السى شارب C# الحريف 1 690 09-14-2007 10:49 PM
آخر رد: الحريف
  مدخل إلى البرمجة غرضيّة التوجّه في السي شارب - دروس سى شارب C# - دروس السى شارب C# الحريف 1 732 09-14-2007 10:47 PM
آخر رد: الحريف
  ربط الفلاش بال #C - دروس سى شارب C# - دروس السى شارب C# الحريف 1 606 09-14-2007 10:45 PM
آخر رد: الحريف
  الدوال --2--#Methods in c - دروس سى شارب C# - دروس السى شارب C# الحريف 1 471 09-14-2007 10:43 PM
آخر رد: الحريف
  الدوال --1--#Methods in c - دروس سى شارب C# - دروس السى شارب C# الحريف 1 678 09-14-2007 10:40 PM
آخر رد: الحريف
  السيطرة على الأخطاء Exception Handling - دروس سى شارب C# - دروس السى شارب C# الحريف 1 331 09-14-2007 10:37 PM
آخر رد: الحريف
  المؤشرات في سي شارب - دروس سى شارب C# - دروس السى شارب C# الحريف 1 704 09-14-2007 10:35 PM
آخر رد: الحريف
  التحويل العلني - Explicit Conversion - دروس سى شارب C# - دروس السى شارب C# الحريف 1 450 09-14-2007 10:33 PM
آخر رد: الحريف
  تحويل الأنواع - التحويل الضمني - دروس سى شارب C# - دروس السى شارب C# الحريف 0 409 09-14-2007 10:28 PM
آخر رد: الحريف
  المتغيرات - Variables - دروس سى شارب C# - دروس السى شارب C# الحريف 2 582 09-14-2007 10:27 PM
آخر رد: الحريف
  أنواع البيانات – Data Types - دروس سى شارب C# - دروس السى شارب C# الحريف 1 374 09-14-2007 10:24 PM
آخر رد: الحريف
  البرنامج الأول في C# - دروس سى شارب C# - دروس السى شارب C# الحريف 1 404 09-14-2007 10:23 PM
آخر رد: الحريف
  البرنامج الأول في C# - دروس سى شارب C# - دروس السى شارب C# الحريف 0 529 09-14-2007 10:22 PM
آخر رد: الحريف
  نقاط مهمة في C# - دروس سى شارب C# - دروس السى شارب C# الحريف 0 851 09-14-2007 10:20 PM
آخر رد: الحريف

مشاهدة نسخة للطباعة
إرسال المشاركة لصديق
إشترك بالمشاركة | إضافة المشاركة للمفضلة

الذهاب إلى :

 Quick Theme: