أريد مساعدتكم في regular expression يطابق درجات طلاب.

اريده ان يطابق نص كهذا: 

20/100 او 40/100 او 20/30

يعني المبدأ ان يكون هناك اي رقم ثم علامة '/' ثم رقم اخر فهل من مساعدة؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

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

يمكنك مطابقة الأعداد في REGEX عن طريق

[0-9]+

ومعناه انك تريد مطابقة كل الأرقام من 0 إلى تسعة وعلامة ال + تعني مع إمكانية التكرار أي مطابقة رقم واحد أو اكثر

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

[0-9]+/[0-9]+

مع ملاحظة أنه عند استخدامك ل "/" ك delimiter فعليك استثناءها فمثلا في لغة ال PHP سيكون الكود شبيها بهذا

$string = 'Your First Subject score is 45/50';
$matches = null;
preg_match('/[0-9]+\/[0-9]+/', $string, $matches);

وستكون قيمة $matches في الكود السابق هي
 

Array ( 
	[0] => 45/50 
)

تحديث

كما ذكر @Adnane Kadri بخصوص علامات بداية العبارة '^' ونهاية العبارة '$'، يمكنك استخدامهما في حالة أردت مطابقة النص كاملا وليس جزءا من النص. فمثلا إذا أردنا أن نقوم بعمل دالة تتحقق من أن النص هو درجة طالب صحيحة --أي مطابقة للشكل الذي نريده--؛ سيكون الكود في PHP  شبيها بهذا:
 

function isValidScore($string)
{
	return (bool) preg_match('/^[0-9]+\/[0-9]+$/', $string);
}

أمثلة لقيمة ما ترجعه الدالة السابقة عند استخدامها للتحقق من النص

isValidScore('45/50'); //-> bool(true) النص المدخل بالكامل من بدايته لنهايته هو درجة طالب كما نريدها

isValidScore('Your Score is 45/50'); //-> bool(false) النص ليس درجة طالب 

 

تمّ تعديل بواسطة aboelabbas
خطأ مطبعي + تحديث
2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

مكونات الـ regular expression التي سيتم استعمالها : 

^ : بداية العبارة . 

0-9 : رقم بين 0 و 9  .
+ : محدد التكرار , اي قبول عنصر واحد في التجميعة أو أكثر .

/ : علامة الـ / الفاصلة بين العددين . 

[ .. ] : حاضنتين لتشكيل تجميعة . 

 $ : نهاية العبارة . 

فتكون العبارة كالتالي : 

^[0-9]+/[0-9]+$

أي نقبل فقط : الأرقام بين 0 و 9 , قابلة للتكرار / الأرقام بين 0 و 9 قابلة للتكرار .

و يكون كل ما هو ليس pos_num/pos_num غير مقبول .

أمثلة : 

12/100 مقبول في حين أن e0/100 غير مقبول .

تمّ تعديل بواسطة Adnane Kadri
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن