2011-03-01 70 views
0

我需要的javascript以下格式(所以我有一個字符串,我必須檢查它是否有效與否)檢查特定的格式(時間和日期)

XX:XX 

值必須測試兩個整數(與兩個數字)相隔冒號,第一個必須是0-23和第二個0-59(這是關於時間)。

第二個測試是關於日期

DD.MM.YYYY 

其中DD是當天的2位數表示,MM月,YYYY年 - 用點分隔。我還可以檢查是否是日期有效?因此,用戶無法鍵入45.02.9999例如。

回答

1

這可以用相當直接的RegEx來完成。

測試時間的第一個24小時的格式是:

/(0[1-9]|1[1-9]|2[1-3]):[0-5][1-9]/.test(yourTime); 

第二測試日期將是:

/([0-2][0-9]|3[0-1])\.(0[1-9]|1[0-2])\.(19[0-9][0-9]|20[0-1][0-9])/.test(yourDate); 

這將使日期,直到2019年12月31日。知道每個月有多少天(即31.02.1999不是有效日期)是不夠聰明的,但是對於大多數目的來說應該足夠好以進行初始驗證。

1

在這篇文章中,你有所有你需要的正則表達式。

http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5

這是時間:

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

這是日期:

^(0[1-9]|[12][0-9]|3[01]).([1][0-12]|[0][1-9]).(19|20)\d\d$ 

您可以在http://www.rubular.com/

+0

正則表達式無法檢查有效性。正則表達式無法捕獲無效日期,例如'29.02.2011' – 2011-03-01 00:46:13

+1

@Stephen P您還沒有聽說過公曆兼容正則表達式? :P – alex 2011-03-01 00:50:23

0

使用試試這個正則表達式的兩個回合方法。首先使用正則表達式來檢查字符串的一般結構,以確保它在正確的位置具有正確的分隔符和數字。在第二步中,您可以使用indexOf()查找分隔符,並使用substring()來提取每個位置的數字。然後使用n = str * 1轉換爲數字,並在第一種情況下檢查範圍n >=0 && n <=23

兩種方法意味着你可以有一個更簡單的正則表達式和更多的可讀代碼。

0

使用正則表達式將字符串拆分爲其組件,然後用結果填充日期對象以檢查有效性。