2013-07-02 4 views
-2

Я хочу удалить секунды из строки времени, формат HH: MM: SS с возможностью пробела и «am/pm» в конце.Regex удалить секунды из строки времени

For example: 11:34:41 pm to 11:34pm 
For example: 11:34:41pm to 11:34pm 
For example: 11:34:41 to 11:34 

Я пробовал много регулярных выражений, никто не работал.

Как это можно сделать?

+3

Этот вопрос не по теме, потому что вопросы должны ** демонстрировать минимальное понимание проблемы, решаемой **. Расскажите, что вы пытались сделать, почему это не сработало и как оно должно работать. См. Также: [Контрольный список вопросов переполнения стека] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) – HamZa

+3

На каком языке вы используете? –

+2

Я не понимаю, кто здесь. Ожидаем ли мы теперь всех, кто знает, как решить эту проблему? Несколько неудачных регулярных выражений здесь не поставили бы вопрос лучше. –

ответ

-1

Вы можете использовать этот один:

/:\d\d([ ap]|$)/ 

Идея заключается в том, чтобы соответствовать :\d\d, когда это следует конец строки или пробелом.

Вы можете проверить его в вашем браузере, набрав те, в консоли:

'11:34:41'.replace(/:\d\d([ ap]|$)/,'$1') 

'11:34:41 pm'.replace(/:\d\d([ ap]|$)/,'$1') 

'11:34:41pm'.replace(/:\d\d([ ap]|$)/,'$1') 
+0

-1 Не работает – mate64

2

Это будет соответствовать 2 номера, а затем двоеточие, за которыми следуют 2 номера:

\d{2}:\d{2} 

Это может будьте достаточно хороши для вас. Тем не менее, если вы хотите, чтобы соответствовать возможные секунды и/или am/pm, но не захватить их, используйте этот один:

(\d{2}:\d{2})(?::\d{2})?(?:am|pm)? 
  • (\d{2}:\d{2}) будет делать то же матч в качестве первого регулярного выражения и захвата результат.
  • (?::\d{2})? будет соответствовать секундам, если они есть.
  • (?:am|pm)? будет соответствовать am или pm если имеется.
+0

-1 Не работает – mate64

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