اذهب إلى المحتوى
  • 0

مساعدة في REGEX

محمود موسى2

السؤال

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

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

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

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

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

Recommended Posts

  • 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
خطأ مطبعي + تحديث
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 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
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...