السلام على من اتبع الهدى ورحمة الله وبركاته
حرصا على أهمية الموضوع وبشدة ، وإثراء لمكتبة السي شارب
وفي نفس الوقت لمن لا يجيد لغة 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;
}===================================================
هذا هو أول درس وارجوا أن أكون أفدت وبالطبع توجد مشاركات بالموضوع الأصلى وأيضا مرفقات يجب متابعتها