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

السؤال

Recommended Posts

  • 0
نشر

عليك أن تقوم بتعديله ليقبل فقط هذه الصيغة ويستبعد الصيغة الأخرى (dd/mm/yyyy) عن طريق تعديل بعض أجزاء التعبير:

^(0?[1-9]|1[0-2])/([0-2]?[0-9]|3[0-1])/((19|20)\d{2})$
  • (0?[1-9]|1[0-2])

يسمح للشهر بأن يكون مكونًا من رقم واحد مع الصفر الاختياري مثل 01 أو رقمين بدون صفر مثل 12.

  • ([0-2]?[0-9]|3[0-1])

يعبر عن اليوم ويسمح لليوم بأن يكون مكونًا من رقم واحد أو اثنين مع الصفر الاختياري مثل 01 أو أي رقم يتراوح بين 00 و 29، بالإضافة إلى الرقم 30 و 31 إذا كان الشهر يسمح بذلك.

  • ((19|20)\d{2})

يعبر عن السنة وهو لا يحتاج إلى تعديل.

وإليك مثال على كود جافاسكريبت لاستخدام التعبير النمطي المعدل للتحقق من تاريخ بتنسيق "mm/dd/yyyy":

function validateDate(inputDate) {
  const regex = /^(0?[1-9]|1[0-2])\/([0-2]?[0-9]|3[0-1])\/((19|20)\d{2})$/;
  return regex.test(inputDate);
}

const date1 = "08/11/2023"; // تاريخ صالح بالتنسيق المطلوب
const date2 = "11/08/2023"; // تاريخ غير صالح بالتنسيق المطلوب
const date3 = "2023/08/11"; // تاريخ غير صالح بأي تنسيق

console.log(validateDate(date1)); // سيطبع true
console.log(validateDate(date2)); // سيطبع false
console.log(validateDate(date3)); // سيطبع false

 

  • 0
نشر

بجانب العبارة النمطية التي اقترحها المدرب مصطفى، يمكنك ايضا استعمال هاته العبارة لذات الغرض: 

^(.*?)((0|1)?\d)/((0|1|2|3)?\d{1})/((19|20)\d{2})(.*?)$

حيث: 

  • ^: يرمز إلى بداية السلسلة.
  • (.*?): هذا الجزء يستخرج أي محتوى في النص.
  • ((0|1)?\d): هذا الجزء يمثل الشهر في الصيغة (dd/mm/yyyy) أو (mm/dd/yyyy). يتم تمثيل الشهر بالأرقام من 1 إلى 12. ((0|1)?\d) يلتقط رقم الشهر، وقد يكون في الصيغة المفتوحة (مثل 03 أو 3) أو المغلقة (مثل 12).
  • ((0|1|2|3)?\d{1}): هذا الجزء يمثل اليوم في الصيغة (dd/mm/yyyy) أو (mm/dd/yyyy). يتم تمثيل اليوم بالأرقام من 1 إلى 31. ((0|1|2|3)?\d{1}) يلتقط رقم اليوم، وقد يكون في الصيغة المفتوحة (مثل 07 أو 7) أو المغلقة (مثل 25).
  • ((19|20)\d{2}): هذا الجزء يمثل السنة في الصيغة (dd/mm/yyyy) أو (mm/dd/yyyy). يلتقط السنة في القرنين 1900 أو 2000.
  • (.*?): هذا الجزء الثاني يستخرج أي محتوى في النص.
  • $: يرمز إلى نهاية السلسلة.
  • 0
نشر
بتاريخ On 11‏/8‏/2023 at 23:12 قال Mustafa Suleiman:

عليك أن تقوم بتعديله ليقبل فقط هذه الصيغة ويستبعد الصيغة الأخرى (dd/mm/yyyy) عن طريق تعديل بعض أجزاء التعبير:

^(0?[1-9]|1[0-2])/([0-2]?[0-9]|3[0-1])/((19|20)\d{2})$
  • (0?[1-9]|1[0-2])

يسمح للشهر بأن يكون مكونًا من رقم واحد مع الصفر الاختياري مثل 01 أو رقمين بدون صفر مثل 12.

  • ([0-2]?[0-9]|3[0-1])

يعبر عن اليوم ويسمح لليوم بأن يكون مكونًا من رقم واحد أو اثنين مع الصفر الاختياري مثل 01 أو أي رقم يتراوح بين 00 و 29، بالإضافة إلى الرقم 30 و 31 إذا كان الشهر يسمح بذلك.

  • ((19|20)\d{2})

يعبر عن السنة وهو لا يحتاج إلى تعديل.

وإليك مثال على كود جافاسكريبت لاستخدام التعبير النمطي المعدل للتحقق من تاريخ بتنسيق "mm/dd/yyyy":

function validateDate(inputDate) {
  const regex = /^(0?[1-9]|1[0-2])\/([0-2]?[0-9]|3[0-1])\/((19|20)\d{2})$/;
  return regex.test(inputDate);
}

const date1 = "08/11/2023"; // تاريخ صالح بالتنسيق المطلوب
const date2 = "11/08/2023"; // تاريخ غير صالح بالتنسيق المطلوب
const date3 = "2023/08/11"; // تاريخ غير صالح بأي تنسيق

console.log(validateDate(date1)); // سيطبع true
console.log(validateDate(date2)); // سيطبع false
console.log(validateDate(date3)); // سيطبع false

 

تمام لكن ظهر لى  مشكله اخره انه عند وجود نص قبل التاريخ لن يحدده ولذلك اضفت هذا الجزء (\D*?) على السطر الخاص بك   هل هذا صحيح وشكرا لك مقدما 

  • 0
نشر
بتاريخ On 13‏/8‏/2023 at 20:59 قال Omar Asaad:

تمام لكن ظهر لى  مشكله اخره انه عند وجود نص قبل التاريخ لن يحدده ولذلك اضفت هذا الجزء (\D*?) على السطر الخاص بك   هل هذا صحيح وشكرا لك مقدما 

صحيح ما ذكرته، فإن كنت ترغب في السماح بوجود نص قبل التاريخ، فعليك بإضافة (\D*?) لتمثيل أي عدد من الحروف غير الرقمية قبل التاريخ، مما يسمح للتاريخ أن يتبعه نص غير رقمي.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...