الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سلسلة تعلم Regular Expressions

مغلق
بدأه Ahmed H. Alawady في 3 أكتوبر 2005 · 0 رد · 1,671 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام على من اتبع الهدى ورحمة الله وبركاته

حرصا على أهمية الموضوع وبشدة ، وإثراء لمكتبة السي شارب

وفي نفس الوقت لمن لا يجيد لغة VB.Net

قمت بنقل الموضوع من قسم VB.Net إلى قسمنا العزيز

فهو موضوع منقول عن الأخ الكريم أعزة الله / الغملاسي مشرف قسم VB.Net جزاه الله عنا خيرا

هذا هو نص الموضوع : الموضوع بقسم VB.Net=================================================================

السلام عليكم

إنطلاقاً من خيركم من تعلم العلم وعلمه , أحببتُ أن أشارك الاخوة والزُملاء بما لدي من حصيلة متواضعه في الـ Regular Expressions

الدرس الأول : مقدمة عن الـ Regular Expressions

ماهي الـ Regular Expressions

هي عبارة عن مجموعة من الصيغ تستخدم في مطابقة النصوص , ولها تعريف ثاني وهو أنها عبارة عن أدوات منطقية logical Tools

تستخدم لفحص النصوص والتأكد من مطابقتها أو إستبدالها بنصوص أخرى او غيرُ ذلك كثير .

في اي صنف تقع الـ Regular Expressions ؟

بلا شك أنها تقع في صنف التحققية Validation. اي التحقق من سلامة البيانات المُدخلة من قبل المستخدم USER

أما عن منشئ هذه الأدوات فهو عالم الرياضيات الأمريكي Stephen Kleene

وكان ذلك في حقبة الأربعينيات من القرن المنصرم 1940s.

وكمعلومة تختصر Regular Expressions بـ regex .

ماهي الفائدة من Regular Expressions ؟

مثلاً نستطيع بهذه الأدوات حصر المستخدم user من إدخال نصوص عربية فقط في خانة TextBox أو أرقام فقط

أو نصوص إنجليزية فقط أو التحقق من صلاحية البريد الإلكتروني أو إستبدال الألف المقصوره بالياء والكثير الكثير منها .

قد يقول البعض نستطيع فعل ذلك عبر النصوص البرمجية !!!

أقول تخيل لو أنك تريد أن تتحقق من خانة تقبل نصوص عربية فقط وتبدأ من حرفين أو أكثر ولا تقبل إلا أربعة اسماء أو أكثر

ويكون بين كل إسم و أخر مسافة ولا تقبل قيمة فارغة Null .

فكم نص برمجي ستكتب لفعل ذلك بلاشك أنه صفحة أو أكثر من النصوص البرمحية

فهل تعلم أن هذه الصيغة تقوم بالمطلوب وهي :

(\b([a-z]){2,}\s?){4,}

عُذرً لا تكترث لهذه التركيبة الآن حتى تحترف هذه الأدوات إن شاء الله بالشكل الذي نطمحُ له جميعاً .

ملاحظة : قد يحتمل كلامي الخطأ , فإن وجد لا تتردد في تصويبه .

كذلك بما أن اللغة العربية تعمل بعض الفُرُقات مع اللغات التي تبدأ من اليسار

فقط إستبدل الحرف z بالهمزة (ء) و إستبدل الحرف a البياء (ي)

كون الحروف تظهر معكوسة عند عرض الكود, لذلك قمت بإستبدالهما بإحرف إنجليزية .

ليظهر المثال بشكل واضح وجلي للجميع

نكتفي بهذا القدر والله أعلى و أعلم

------------------------------------------------------

السلام عليكم

حياك الله أخي الطيب

مشاء الله عليك باين عليك مستعجل على الـ Regex

طيب الخطوات لعمل التحقق من البيانات يكون كالتالي :

1 نقوم بإدراج القالب Class

using System.Text.RegularExpressions;

ثانياً ننشئ متغير ثابت بهذا الشكل

const string ArabicStringRX = "(\\b([ء-ي])" + "{2,}\\s?){4,}$";

عفواً في المثال السابق نسيت أن أضع علامة الدولار $ ضمن الصغية .

ثالثاً نقوم بصناعة وظيفة مشتركة Shared Function لتقوم بالتحقق من ذلك بهذا الشكل

public static bool ValidateArabicString(string TheString) 
{ 
 try { 
   Regex rx = new Regex(ArabicStringRX); 
   return rx.IsMatch(TheString); 
 } catch (FormatException ex) { 
   throw ex; 
 } catch (Exception ex) { 
   throw ex; 
 } 
}

أخيراً في حدث الـ Validating نكتب الأتي

private void TextBox1_Validating(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
 try { 
   this.TextBox1.Text = Trim(this.TextBox1.Text); 
   if (!(ValidateArabicString(this.TextBox1.Text))) { 
     e.Cancel = true; 
     MsgBox("الرجاء قم بإدخال أربعة أسماء باللغة العربية أو كثر"); 
   } 
 } catch (Exception ex) { 
 } 
}

و إن شاء الله في الدورس القادمة سنتطرق للمزيد المزيد إن شاء الله

------------------------------------

"Ammar Gaffar" : السلام عليكم

الموضوع جميل ومفيد جداً . وال Validation علي إدخالات المستخدمين والتحكم فيها يضمن سلامة وصحة البيانات وهنالك بعض الاضافات علي مشاركة الاخوه الاعضاء

الكود التالي عبارة عن دالة تتحقق من عنوان البريد الالكتروني وهي تقوم بارجاع قيمة منطقية

public bool IsEmailAddress(string StrValue) 
{ 
 bool blnMatch; 
 blnMatch = System.Text.RegularExpressions.Regex.IsMatch(strValue, "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)" + "|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"); 
 return blnMatch; 
}

ولاستخدام هذه الدالة فقط قم بمناداتها وتمرير القيمة النصية التي تريد التحقق منها مثلاً

IsEmailAddress(TextBox1.Text)

والكود التالي عبارة عن دالة تتحقق من عنوان موقع الانترنت وهي بنفس طريقة الدالة السابق :

public bool IsWebAddress(string strValue) 
{ 
 bool blnMatch; 
 blnMatch = System.Text.RegularExpressions.Regex.IsMatch(strValue, "^http://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?"); 
 return blnMatch; 
}

===================================================

هذا هو أول درس وارجوا أن أكون أفدت وبالطبع توجد مشاركات بالموضوع الأصلى وأيضا مرفقات يجب متابعتها

Name : Ahmed H. Alawady

Web Site : Alawady.info

Email : alawady_ahmed@hotmail.com

Tel : +2 012 345 6808

هذا الموضوع مغلق.

مواضيع مشابهة