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

سلسلة تعلم Regular Expressions

مغلق
بدأه الشهاب الحارق في 2 مارس 2005 · 14 رد · 5,970 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

إنطلاقاً من خيركم من تعلم العلم وعلمه , أحببتُ أن أشارك الاخوة والزُملاء بما لدي من حصيلة متواضعه في الـ 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 البياء (ي)

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

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

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

1

في المثال يتضح المقال

#2

وعليكم السلام ورحمة الله

فعلاً أمر غاية في الأهمية ، أريدك أن تنطلق فيه بقوة ، فهو مفيد خاصة لمبرمجي صفحات الإنترنت ، وعامة لكل المبرمجين

وفقك الله للخير

:)

#3

يعطيل العافية أخي "الغملاسي"

قال عليه الصلاة والسلام المطيبة الأفواه بذكره : "رحم الله نساء الأنصار لم يمنعهن الحياء من السؤال"

سؤالي هو أين أضع هذا الكود وكيف أستخدمه :

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

تم تعديل هذه المشاركة بواسطة seahmad في 2 مارس 2005 في 19:52

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#4

السلام عليكم

كلامي هذا لا علاقة له بالموضوع لكنه أهم

الأخ الحبيب seahmad

ذكرت وقلت :

اقتباس
قال عليه الصلاة والسلام المطيبة الأفوه بذكره : "رحم الله نساء الأنصار لم يمنعهن الحياء من السؤال"

وأحب أن أنوه أن هذا ليس بحديث عن النبي صلى الله عليه وسلم بل هو قول مأثور عن عائشة رضي الله عنها أنها قالت :

اقتباس
نعم النساء نساء الأنصار لم يمنعهن الحياء أن يتفقهن في الدين

فيرجى التنبه

:)

تم تعديل هذه المشاركة بواسطة محمد النحراوي في 2 مارس 2005 في 19:53

2
#5

أخي في الله محمد النحراوي جزاك الله خيرا على هذا التنبيه وماشاء الله عليك .. كل الإحترام والتقدير لك .. أحب أن أخبرك عن هذا الحديث أني سمعته من شخص عادي ولا أعلم مدى صحته فأشكرك على التنبيه ولكن قد يكون هذا فعلا حديث عن رسول الله (إن شاء الله سأتثبت من صحته) إضافة إلى القول المأثور عن عائشة رضي الله عنها ،،، فعلى سبيل المثال هناك أذكار من أذكار الصباح والمساء لها أكثر من رواية لنفس الذكر وكل رواية تختلف إختلاف بسيط عن الثانية وقد يصل الأمر إلى اختلاف كلمة واحدة. فهل توافقني ذلك ؟

تم تعديل هذه المشاركة بواسطة seahmad في 2 مارس 2005 في 20:05

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#6

السلام عليكم

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

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

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

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

Imports System.Text.RegularExpressions

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

 Const ArabicStringRX As String = "(\b([ء-ي])" & "{2,}\s?){4,}$"

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

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

 'The Shared Function Check if the Field contents Arabic Letters Only
    '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    Public Shared Function ValidateArabicString(ByVal TheString As String) As Boolean
        Try
            Dim rx As New Regex(ArabicStringRX)
            Return rx.IsMatch(TheString)
        Catch ex As FormatException
            Throw ex
        Catch ex As Exception
            Throw ex
        End Try
    End Function

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

 Private Sub TextBox1_Validating(ByVal sender As Object, _
    ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
        Try
            Me.TextBox1.Text = Trim(Me.TextBox1.Text)
            If Not ValidateArabicString(Me.TextBox1.Text) Then
                e.Cancel = True
                MsgBox("الرجاء قم بإدخال أربعة أسماء باللغة العربية أو كثر")
            End If
        Catch ex As Exception

        End Try
    End Sub

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

ArabicTextExample.zip

في المثال يتضح المقال

#7

السلام عليكم

جزاك الله خيرا أخي الغالي أحمد ، ولكن عن نفسي قمت بالبحث ولم أجد إلا هذا القول لعائشة رضي الله عنها ، ولكن ننتظر نتيجة بحثك

أخي الغملاسي ، جميل جداً .. كنت أفكر في فكرة أود عرضها عليك

لماذا لا تسير بهذه الدروس في منهجية كلاس

بمعنى نفترض أنك تقوم بتصميم كلاس لعملية ال validation ، بحيث يشمل جميع أنواع الإدخالات المتوقعة ، فتصممه بالشرح ..

واظن أنه سيخدم فئة كبيرة من الإخوة هنا ..

أرجو أن تكون فكرتي وصلت لك ..

هذا رأي لا أكثر .. وأنت بالطبع ترى الأسلوب الأفضل بالنسبة لك..

وفقك الله

#8

السلام عليكم

أخي محمد النحراوي جزاك الله خير على الفكرة القيمة

أنا بالطبع عامل Class واضع فيه معظم التوقعات Validations وهذا القالب Class مرفق في

Custom Control وهو بلا شك Text Box و لكن قلت في البداية أتكلم عن الـ Regex ثم بعد ما نكملها

نبني المشروع مع التطرق لـ Custom Control حتى ننتهي ونحن قد أكملنا كل من الـ Regex مع الـ Custom Control .

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

يتابعون الدروس عن فهم و روية , وهذا هو المقصد من التجزئة . فإن كنت ترى غير ذلك

سأقوم بشرح الأثنين في آنٍ واحد, على كل حال في الدروس الأحقة سأشرح الفكرة التي نود بنائها

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

حقيقة أنت نبراس الموقع (*&*)

تم تعديل هذه المشاركة بواسطة الغملاسي في 3 مارس 2005 في 03:37

في المثال يتضح المقال

#9

مشكور على هذا الرد السريع

بصراخة موضوع الـ Regex جميل جدا وأرجو الإستمرار

وفقك الله

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#10

السلام عليكم

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

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

  Public Function IsEmailAddress(ByVal StrValue As String) As Boolean
        Dim blnMatch As Boolean
        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
    End Function

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

IsEmailAddress(TextBox1.Text)

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

Public Function IsWebAddress(ByVal strValue As String) As Boolean
        Dim blnMatch As Boolean
        blnMatch = System.Text.RegularExpressions.Regex.IsMatch(strValue, _
            "^http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?")
        Return blnMatch
    End Function

وعسي أن تكون مشاركتي ذات فائدة للجميع

والله الموفق

#11

السلام عليكم

حياك الله أخي عامر و إضافتك في محالها .. و أكبر من محلنا

وشكراً جزيلاً لكل الأخواة عموما و المشاركين في موضوعنا خصوصاً .

في المثال يتضح المقال

#12

السلام عليكم

أخونا العزيز الغملاسي ، فكرتك أفضل فعلاً فالتجزئة توضح الأمور أكثر ، فاستمر وفق منهجك ، بارك الله لك

أخونا الغالي عمار ، أمثلة جميلة ، شكراً لك

#13

بارك الله فيك أخي الغملاسي ..

موضوع مهم بالفعل ..

على أي حال بالنسبة للمعاملات وفوائدها، بإمكانكم الاستفادة من هذا الموضوع:

/index.php?showtopic=57738

بالتوفيق ..

ani.gif
#14

السلام عليكم ماشاء الله عليك اخي عبد الله فتحي كفيت ووفيت

لقد قرأت موضوعك وكان حقاً مفيد و أتمنى الجميع أن يقرأة لان Regex لا تقتصر على لغة معينه ولا على نسخة معينه

و جزاك الله خيرا

في المثال يتضح المقال

#15

السلام عليكم ورحمة الله وبركاته

اين أجد شرح لهذه المكتبة أو أى مكتبة أخرى لم أتعامل معها من قبل ؟

هل هناك أى شئ أستطيع به معرفة الكثير من المعلومات عن هذه المكتبات ؟

أرجوا الإفادة

وشكرا لحسن شرحكم ووفقكم الله لما فيه الخير :D

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

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