2014-09-05 3 views
1

Я хочу проанализировать строку выражения времени (имеет 4 группы: неделю (w), день (d), час (h) и минута (m)). Некоторые примеры:Regex pattern для строки выражения времени

  1. -3w 4д 2ч 1м
  2. + 3w 2ч 1м
  3. 3d 1м
  4. 1d
  5. ...

Я придумал этот шаблон :

([+-]{0,1})([0-9]+)w?\s?(0?[1-9]|[12][0-9]|3[01])d?\s?([01]?[0-9]|2[0-3])h?\s?([0-5][0-9])m? 
  • начинается с + или - или ни
  • значение, прежде чем неделя неограниченно
  • значение до дня от 0 до 31
  • значения до того часа, от 0 до 23
  • значение, прежде чем минуты от 0 до 59
  • пробела (\ S) является необязательным

Но этот шаблон не работает. Пожалуйста помоги. Извините за мой английский!

+0

Каким образом это не будет работать? – Bohemian

ответ

1
^([+-]?)([0-9]+)?w?\s*?(0?[1-9]|[12][0-9]|3[01])?d?\s*?([01]?[0-9]?|2[0-3])?h?\s*?([0-5]?[0-9])?m?$ 

Изменено ваше regex.Works now.Might нужно больше тестирования.

См. Демонстрационную версию.

http://regex101.com/r/sB4kE6/4

0

Это то, что я использую для моей проверки:

^(?:(?:0?[0-9]|1[0-2]):[0-5][0-9]\s?(?:(?:[Aa]|[Pp])[Mm])?|(?:1[3-9]|2[0-3]):[0-5][0-9])$ 

Он работает до 24:00 и 12:00 формат, позволяющий капитал AM/PM.

Возможно, это может помочь вам в правильном направлении.

Смежные вопросы