2012-07-02 3 views
0

Я просмотрел несколько вопросов времени регулярного выражения, но не нашел того, что мне нужно, и я довольно не знаю, как писать выражения регулярных выражений.Regex for hh: mm: ss tt string

мне нужно значения времени, как это передать:

  • 06:03:05 AM
  • 6:03 вечера
  • 6: 3: 5 AM

Это регулярное выражение кажется как это было бы для этого (что я нашел на Here, но мне также необходимо иметь часть AM/PM, но она также может быть нечувствительной к регистру.

([0-1]?\d|2[0-3]):([0-5]?\d):([0-5]?\d) 

Итак, чтобы подвести итоги того, что мне нужно в этом регулярное выражение:

  • одноразрядное час: мин: сек приемлемые
  • двойные цифры чч: мм: сс приемлемый
  • AM/PM требуется, но нечувствительно к регистру
  • если AM/PM часть может быть введена как или р было бы хорошо, но не нужно
  • секунд являются необязательными
  • 24 часа времени не допускается

Любая помощь была бы принята с благодарностью.

+2

Как вы используете регулярное выражение в SQL Server? CLR? –

+0

Как насчет 24-часового времени? – bluevector

+0

@AaronBertrand - Эти времена будут сохранены в SQL-сервере. У меня есть другая часть программы, которая устанавливает текущее время кнопкой, поэтому мне не нужно никакого регулярного выражения, но мне также нужно разрешить редактирование времени в конце. –

ответ

2

Регулярное выражение вы предоставляете поддержку 24-часовое время, следующее мое строго следует вашему запросу

(1[012]|0?\d):[0-5]?\d(:[0-5]?\d)?\s+[AaPp][Mm]? 
+0

Отлично работает, делает это окончательно? в конце сделать am/pm необязательным? –

+0

Он делает [Mm] опционным, так что AM/PM можно добавить как A или P – zellio

1

Просто добавьте ? после секундной части и \s+[aApP][mM] в конце Re:

([0-1]?\d|2[0-3]):([0-5]?\d)(:([0-5]?\d))?\s+[aApP][mM] 

И когда вы не NEET формат 24h изменить первую часть:

(1[0-2]|0?\d):([0-5]?\d)(:([0-5]?\d))?\s+[aApP][mM] 
+0

Они сказали, что никакого военного времени, которое я собираюсь принять, означает, что они американские и средние 24-часовые часы. – zellio

+0

@Mimisbrunnr - Извините, я отредактировал свой вопрос, чтобы уточнить это. –

+0

нормально, исправлено. Спасибо! –

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