مساعدة مع التعابير المنطقية - تتطلب AM / PM سلاسل فرعية في نهاية

StackOverflow https://stackoverflow.com/questions/2253695

  •  20-09-2019
  •  | 
  •  

سؤال

وأنا باستخدام preg_match PHP للحصول يدعى مجموعات فرعية من السلسلة. أنا تحليل سلاسل التاريخ / الوقت الذي ينتجه المستخدم في الرموز الوقت / التاريخ منسقة بشكل جيد.

وهنا قال لي التعابير المنطقية

~(?P<month>\d?\d)(/|-)(?P<day>\d?\d)(/|-)(?P<year>\d\d\d?\d?) +(?P<time>[\d: +((A|a)|(P|p))(M|m)]+)~i

وبشكل صحيح بتوزيع التمور مثل

01-17-10 09:30 pm
2/1/2010 06:19am

وإلى الأجزاء المكونة لها. ومع ذلك، فإنه يقبل 02/11/2010 06:19، مع عدم وجود صباحا / مساء السلسلة، والذي أود أن لا تفعل. ماذا أفعل الخطأ؟

هل كانت مفيدة؟

المحلول

أنت باستخدام فئة [\d: +((A|a)|(P|p))(M|m)] شخصية للتعبير عن وقتك. يصف هذا مجموعة أحرف فقط حرف واحد وليس تسلسل مع وجود نمط محدد.

وحاول (?P<time>\d\d?:\d\d *[ap]m) بدلا من ذلك:

~(?P<month>\d\d?)(/|-)(?P<day>\d\d?)(/|-)(?P<year>\d\d\d?\d?) +(?P<time>\d\d?:\d\d *[ap]m)~i
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top