اكتب التعبير المنتظم Regular Expression الذي يصف
1- كتابته التاريخ ذو الصيغه dd/mm/yy
2- كتابته الوقت ذو الصيغه hh:mm:ss am|pm
اكتب التعبير المنتظم Regular Expression الذي يصف
1- كتابته التاريخ ذو الصيغه dd/mm/yy
2- كتابته الوقت ذو الصيغه hh:mm:ss am|pm
وضح أكثر أخي الكريم ماذا تقصد ؟
.............. بسم الله الرحمن الرحيم ...............ز
"فمن إتبع هداي فلا يضل ولا يشقي " صدق الله العظيم
ماض في الطريق إلي .... C++
1- كتابته التاريخ ذو الصيغه dd/mm/yy
(0?[1-9]|[1-2][0-9]|3[01])/([1-9]|0[1-9]|1[12])/((19|20)?[0-9][0-9])
التعبير السابق سيعيد اى من التاليين:
3/07/2012 7/7/1985 12/11/1970 06/05/85 1/12/00
2- كتابته الوقت ذو الصيغه hh:mm:ss am|pm
(0?[1-9]|1[0-2]):(0?[0-9]|[1-5][0-9]):(0?[0-9]|[1-5][0-9])\s*[AaPp][Mm]
التعبير السابق سيعيد اى من التاليين:
12:3:17 PM 8:8:7 aM 3:14:15 Am 07:06:55 pM 1:1:1 am
و الله ولي التوفيق
تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 31 أغسطس 2011 في 21:57
مدونتي: C++ Tips and Tricks
حسب خبرتي البسيطة في Regular Expression شوف هذا الحل ان شاء الله يكون حسب المطلوب
:)
1- كتابته التاريخ ذو الصيغه dd/mm/yy
^([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})$2- كتابته الوقت ذو الصيغه hh:mm:ss am|pm
^([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\|(AM|am|PM|pm)$في مشكلة بسيطة في المدى يعني مثلا الشهر هو 31 يوم , اذا ادخل شخص 40 راح يحسبها صح
حاولت فيها بس ما زبطت معي ومش عارف اذا في الـ Regex صيغة معينة عشان تضبط المدى للارقام !!
لكن بلغة البرمجة ممكن تحل هذه المشكلة بسهولة ^_^
تم تعديل هذه المشاركة بواسطة M.B.O في 30 أغسطس 2011 في 22:59
اقتباسفي مشكلة بسيطة في المدى يعني مثلا الشهر هو 31 يوم , اذا ادخل شخص 40 راح يحسبها صح
حاولت فيها بس ما زبطت معي ومش عارف اذا في الـ Regex صيغة معينة عشان تضبط المدى للارقام !!
اليوم و الشهر بهم نفس المشكله، الحل هو ان تتعامل مع على مستوى الخانات و بالتالي خانة اليوم ممكن ان تأخذ أى من الأشكال التاليه: 9 - 09 - 12 و بالتالي عندما يكون اليوم اقل من 10 يمكن استخدام التعبير التالي:
0?[1-9]
إذا كان اليوم فى المدى من 10 إلى 29 يمكن استخدام التعبير التالي:
[1-2][0-9]
يتبقي الأيام 30 و 31
3[01]
عند دمج الحالات معا:
(0?[1-9]|[1-2][0-9]|3[01])
التعبير السابق يطابق رقم اليوم من 1-9 او 01-09 او 10-31 فقط.
و الله ولي التوفيق
مدونتي: C++ Tips and Tricks
اقتباساليوم و الشهر بهم نفس المشكله، الحل هو ان تتعامل مع على مستوى الخانات و بالتالي خانة اليوم ممكن ان تأخذ أى من الأشكال التاليه: 9 - 09 - 12 و بالتالي عندما يكون اليوم اقل من 10 يمكن استخدام التعبير التالي:
سويت نفس الطريقة لكن شفتها طريقة مطولة شوية بالغة البرمجة ممكن تحل هذه المشكلة بسهولة
اخي محمد علاء الباترن الذي وضعته صحيح لكن فيه بعض الاخطاء
لو وضعت حرف في بداية اليوم وكذلك حرف في نهاية السنة راح يحتسبها صحيح ينقصه هذين الرمزين ( $^ ) وراح يكون تمام
يعني بالشكل النهاي سوف يكون كذا
^(0?[1-9]|[1-2][0-9]|3[01])/([1-9]|0[1-9]|1[12])/((1?9|2?0)?[0-9][0-9])$
كذلك باترن الوقت كذا بيكون افضل
^(0?[1-9]|1[0-2]):(0?[0-9]|[1-5][0-9]):(0?[0-9]|[1-5][0-9])\s*[AaPp][Mm]$
اتمنى التوفيق للجميع ^__^
اقتباساخي محمد علاء الباترن الذي وضعته صحيح لكن فيه بعض الاخطاء
لو وضعت حرف في بداية اليوم وكذلك حرف في نهاية السنة راح يحتسبها صحيح
لو استخدمت الباترن مع نص يحتوى على عدة تواريخ او اوقات سيعيدها لك فقط، اما بإستخدام الـ Line Markers فهذا يعنى ان القيمه المدخله اما تحتوى على تاريخ او لا و هذا يحدد كثيرا من عملية الإستخدام.
و الله ولي التوفيق
مدونتي: C++ Tips and Tricks
السلام عليكم ورحمة الله
كل عام وانتم بخير
الجزء اخي MBO الدال على السنة في التاريخ
((1?9|2?0)?[0-9][0-9])
سيشمل ادخالات لا اعتقد انها مرحب بها
مثل
000..099
900..999
وارى الاولى استخدام صيغة مثل
((?:19|20)?[0-9]{2})اما بالنسبة لتحديد بداية ونهاية الـ Matching فانا مع رأي اخونا محمد علاء الدين لان كما قما قال سيكون استخدامها بدون التحديد موسعاً واذا دعت الضرورة لها فمعظم ما واجهت من لغات تمكنك من اختيار Global Matching أو العكس
تحياتي
تم تعديل هذه المشاركة بواسطة ihope في 31 أغسطس 2011 في 10:12