2012-06-12 56 views
0

審查Time validation question by Amra如何解決時間的正則表達式

我創建了一個正則表達式我需要

VAR重新=/^ \ S *([01] \ d後|?1 0-2 ]):([00,30] \ d)\ S * $ /;

我的本意是隻允許小時和半小時的間隔時間

即: 「12:00」, 「01:00」, 「12:30」, 「01:30」, etc

這個正則表達式幾乎可以工作,它在「01:10」時返回false,但是當我輸入「01:01」....「01.09」時它返回值,它必須是假的。

請幫我

並請描述這個正則表達式的詳細..

回答

1

[00,30]沒有做什麼,你認爲它。 []正則表達式中的組是字符類 - 可以匹配的字符集,例如[a-z]匹配單個小寫字母,而不是字符串「a-z」。

試試這個:

var re = /^\s*(0?\d|1[0-2]):?(00|30)\s*$/; 

(00|30)比賽無論是0030,並沒有別的 - |是正規表達式 「或」 操作符。

+0

但它幾乎工作。首先我是一個正則表達式的新手 – user1400191

+0

請描述var re =/^ \ s *(0?\ d | 1 [0-2]):?(00 | 30)\ s * $/ – user1400191

+0

'^ \ s *'=不是空格0-n次; '(0?\ d | 1 [0-2])'='0?\ d'或'1 [0-2]'; '0?\ d' =一個'0' 0或1次,後跟一個數字; '1 [0-2]'=一個'1'後跟一個'0',一個'1'或'2'; ':?'= a':'0或1次; '(00 | 30)'=「00」或「30」; '^ ... $'= *應該與所有字符串匹配,而不是任何子字符串* – sp00m

0

如果要允許24小時時間,你可以稍微改變琥珀的答案:

/^\s*([0-1]?\d|2[0-3]):?(00|30)\s*$/