2012-06-12 2 views
4

мне нужен регулярный формат выражение для проверки времени с AM/PMРегулярное выражение для 12ч Формат времени

Я использовал этот

^(?:0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$ 

, но это не принимает любое время.

Мой формат времени будет 12-часовым форматом (03:23:15 AM) следующим образом. Кто-нибудь знает регулярное выражение для работы с этим ???

+4

ли вы * есть * использовать регулярное выражение, а не 'DateTime.TryParse' ? Обратите внимание, что ваше регулярное выражение даже не пытается включить AM/PM, а также принимает до 23 в качестве номера часа ... –

ответ

1

Попробуйте это:

(1[012]|[1-9])(:[0-5][0-9]){2}(\\s)?(?i)(am|pm) 

Регулярное выражение включает AM PM слишком

(\\s)? - follow by a white space (optional) 
(?i) - next checking is case insensitive 
(am|pm) - follow by am or pm 
2

Можете ли вы попробовать это?

([0][0-9])|([1][0-2])\:[0-5][0-9]\:[0-5][0-9][:b]*(AM|PM|am|pm) 
  • матчи хх: YY: ZZ, где
  • Первый член ([0][0-9])|([1][0-2]) матчи хх до 00-09 или 10-12
  • Последующие термины [0-5][0-9] Constrain уу, ZZ до нескольких минут, секунд от 00- 59 включительно
  • Space является необязательным
  • Наконец AM или PM подобран в верхнем или нижнем регистре
1

[01][0-9]:[0-5][0-9]:[0-5][0-9] (AM|PM) Должен соответствовать вашему примеру.

[01]\d(:[0-5]\d){2} (AM|PM) если вы хотите его упростить.

EDIT: Как комментарию точки из этого не будет работать, попробуйте следующее: ([01][0-2]|0?[1-9])(:[0-5][0-9]){2} (AM|PM)

+0

Также «19:00:00 AM» – Rawling

2

Попробуйте это:

[0][0-9]|[1][0-2][:][0-5][0-9][:][0-5][0-9][ ][AM]|[PM] 
Смежные вопросы