لمحة جافاوية 27: التحقق من المدخلات

السلام علكيم

سأحدثكم اليوم عن آليات التحقق من المدخلات
لماذا أتكلم عن هذا الموضوع؟
بصراحة أي برنامج تقوم به
من الضروري أن تقوم بفحص مدخلاته
مثلاُ هل يصح أن يدخل المستخدم أرقاماً في حقل الاسم؟
هل يصح أن يحتوي رقم الهاتف على حروف؟
لذا يجب أن تفحص مايدخله المستخدم من بيانات إلى برنامجك
في بعض الأحيان يسبب عدم التحقق خسائر صخمة جداً
مثل البنوك والمؤسسات الكبيرة
في أحيان أخرى يكون التحقق مجرد كمالية
تجعل منك محترفاً في وسط زملائك المبرمجين
في كل الحالتين نحن مهتمين جداً
ما الذي ذكرني بهذا الموضوع؟
بصراحة أنا استخدم التحقق من المدخلات
منذ السنة الثانية الجامعية
أستطيع أن أقول أني أتقنه بشكل تقريباً منذ سنة
وأنا بطبعي أحب الا اقتراب من الكمال في كل شيء
(طبعاً الكمال لوجه الله)
من منطلق قول الرسول “إن الله يحب إذا عمل أحدكم عملاً أن يتقنه”
الموضوع في بالي منذ فترة لكن الكسل أقعدني
الذي حقزني بشكل كبير
أني من يومين كنت أتصفح الفريق العربي للبرمجة
(منتداي المفضل)
فرأيت برنامج نوتة تليفونات
البرنامج جميل جداً من كل النواحي
وبرنامج أقل ما يوصف به أنه فوق العادي
لكن وجدت فيه عيباً قاتلاً
تصوروا لم يكن يقوم بفحص ما يدخله المستخدم عند إضافة رقم جديد
لدرجة أني استطعت أن أكتب أرقام مكان اسم الجهة
وحروف في رقم الهاتف
لذا تجدون أن هذه هي القشة التي قسمت ظهر البعير
وجعلتني أكتب لكم هذا المقال
ادعوا الله أن لا يكون هذا المقال هوه القشة التي قسمت ظهر البعير بالنسبة لكم

يمكننا التحقق من المدخلات بطريقتين
1- الطريقة التقليدية
2- التعابير المنتظمة regular expression

الطريقة التقليدية
يتبع لهذه الطريقة
1- فحص هل الحقل يحتوي على شيء
عن طريق فحص طول الجملة String المرجعة من الدالة getText
2- فحص هل الحقل عبارة عن رقم
عن طريق استخدام الدالة Integer.parseInteger
لو كان الحقل يحتوي على غير الأرقام
سنحصل على Exception
من مساوئها:
1- إمكانياتها قليلة(لا تستطيع القيام بكل ما تريد القيام به)
2- بطيئة في معظم الأحيان

التعابير المنتظمة regular expression
تعتمد على علم الأتمتة aotomata
أحياناً يتم اختصارها إلى regex أو regexp
باختصار التعبير المنتظم هو عبارة عن مجموعة من الشروط
يجب تحققها في جملة ما لنقوم باتخاذ إجراء ما وذلك عن طريق كتابة ذلك برموز يفهمها الحاسوب
مثال بسيط جداً
كلمة تحتوي على حرف ع
بالطبع علاء تنطبق عليها الشروط
وعبده أيضاً
الدب لا تنطبق عليها الشروط
مثال بسيط
عبارة تتكون من حروف ومسافات فقط
الطبع علاء تنطبق عليها الشروط
وعبده أيضاً
لكن عبارة الدب رقم 1 لا تنطبق عليها الشروط
لوجود رقم واحد في التعبير
الذين درسوا مادة الأتمتة
يمكنهم القيام ببرمجة برمجيات تفحص أشياء كهذه
لكن هل يلزمني أن أتعلم هذا العلم لأقوم بذلك
بالتأكيد لا فهناك الكثير من لغات البرمجة تقدم آليات للفحص
كل ما عليك أن تخبرها بما تريده لكن بلغتها هي
وبما أن هذا المقال ضمن تصنيف لمحات جافاوية
فيبدو أني سأحدثكم عن آلية إخبار جافا بهذه الشروط
جيد لنبدأ إذن
نبدأ بمجموعة من الرموز المهمة لنا في التعابير المنتظمة
هناك نوعان من الرموز المستخدمة في التعابير المنتظمة
1- رموز تتعلق بنوعية المدخلات وهي

\s

يرمز للمسافة

\d

يرمز للأرقام من 0-9

\w

يرمز إلى الحروف

\S

يرمز إلى اللامسافة

\D

يرمز إلى اللاأرقام من 0-9

\W

يرمز إلى اللاحروف

[A-Z]

يرمز إلى الحروف الكبيرة فقط

[a-z]

يرمز إلى الحروف الصغيرة فقط
ليس بالضرورة أن تكون بهذه الصورة
فمثلاُ [a-d] تعني الحروف الصغيرة من a إلى d

[0-9]

يرمز إلى الأرقام فقط

1- رموز تتعلق بالتكرار

?

لم يحصل أو حصل مرة واحدة

*

لم يحصل أو حصل أي عدد من المرات

+

حصل مرة أو أكثر

{d}

حصل d من المرات

{d,}

حصل d من المرات أو أكثر

{d,m}

حصل بعدد مرات يتراوح بين d و m

أترككم في رعاية الله
أكمل في مرة قادمة بإذن الله
لاحظوا التنكير هنا
بمعنى أني لست مضطر أن تكون المقالة القادمة هي تكملة المقال

تحياتي

Tags: , , , , ,

3 Responses to “لمحة جافاوية 27: التحقق من المدخلات”

  1. […] ما بدأت لكنكم تجدوني مضطر على هذا لأني عندما قرأت التدوينة السابقة وجدتها لا توصل المعنى المطلوب لا مشاكل بالنسبة لي لكني […]

  2. Salam قال:

    اممم .. يعني pattern matching

Leave a Reply