2010-01-16 38 views
7

HH için düzenli ifade istiyorum: MM: SS AM/PM burada HH sadece 1-12 olmalıdır, MM 60 dakika, SS her zamanki gibi (60 sn.) Uygun bir şekilde ... ?zaman için düzenli ifade

+0

'HH' gösterimi, saatlerin sıfır doldurulmuş olması gerektiğini ve 00'dan başlamasını gerektirdiğini, ancak sorunun daha sonra bununla çeliştiğini ima eder. Gerçekten ne demek istiyorsun? Belki biraz daha hassas olabilirsiniz, belki de birkaç eşleme ve başarısız ipucu örneği ile? –

cevap

12
(0[1-9]|1[0-2]):([0-5][0-9]:[0-5][0-9]|(59|44|29):60) (AM|am|PM|pm) 
+2

+1. AM/PM'yi kaçırdınız, ancak bu yeterince kolay. –

+2

Saat diliminize bağlı olarak, hem AM'de hem de PM'de saniye cinsinden saniyeler olur (eğer + GMT iseniz AM'de gerçekleşir). – mynameiscoffey

+0

sadece küçük durumda am/pm gerekir Currect: (0 [1-9] | 1 [0-2]): ([0-5] [0-9]): ([0-5] [0 -9] | 60) (AM | PM | am | pm) –

8
/^([1-9]|10|11|12):[0-5][0-9]:[0-5][0-9] [AP]M$/ 
+0

Zarif! Kısalık için +1. –

+0

Bu soruya verilen HH notasyonunu desteklemiyor, o da "HH 1-12 olmalı" diye kim bilir, kim bilir. Ayrıca, olabildiğince nadir bir sıçrama süresi için de bir vaka eklemek isteyebilir. – mynameiscoffey

+0

Kesinlikle daha kısa yapılabilir:/^ ([1-9] | 1 [0-2]) (: [0-5] [0-9]) {2} [AP] M $/ama bence Okumayı zorlaştırır. ;) –

5

sıfır olarak isteğe bağlı dolgu yanı sıra artık saniye var edebilmek istiyorsanız:

/^((0?[1-9])|(1[0-2])):[0-5]\d:(([0-5]\d)|(60)) [AP]M$/ 

dökümü:
(0?[1-9]|1[0-2]) 1-9 (isteğe bağlı sıfır) ya da ikinci birinci basamak için 10-12
[0-5][0-9] 00-59 (0-5, 0-9)
([0-5][0-9])|(60) sıçrama saniye
[AP]M AM/PM

+0

Güncelleme, yakalama için teşekkürler - ilk önce test etmediğim şey bu. – mynameiscoffey

+0

Çok güzel regexp! – jspcal