2011-07-11 33 views

回答

1

...不知道你想要做到這一點的嚴格程度。

var months = [ 
     'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC' 
    ], 
    regValidate = RegExp('^(?:' + months.join('|') + ')-[0-3][0-9]-\\d{4}$'); 

alert(regValidate.test('OCT-12-2011')); 
2

不要試圖非常嚴格地使用正則表達式來驗證它。檢查格式,使用這樣的事情:

[A-Z]{3}-[0-9]{2}-[0-9]{4} 

然後,檢查各部分看到,部分是否有效。

+0

+1無效月的日期,正則表達式是絕對不驗證日期的方式,你可以嘗試一些問題的答案,但你驗證日期,而不是它的字符串表示。 –

0

根據您的要求,下面可以做:

^[A-Z]{3}-\d{2}-\d{4}$ 

或者更復雜的:

^(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)-(0[1-9]|[12]\d|3[01])-[12]\d{3}$ 

或者在:)之間的任何東西(你甚至可以進一步闡明年份部分。)

+1

幾個月的日期通常在01-31之間,而不只是12! –

+0

@Kerrek SB不,我只是注意到:)更正,但感謝您的注意。 – jensgram

4

Date JS是Google上的第一次。

Poverful yet simple!

全面,簡單,隱蔽,快捷。 Datejs已通過所有審判並準備罷工。 Datejs不僅解析字符串,而且將它們切成兩半。從他們的網站

示例代碼:

Date.parse('today'); 
Date.parse('t + 5 d'); // today + 5 days 
Date.parse('next thursday'); 
Date.parse('February 20th 1973'); 
Date.parse('Thu, 1 July 2004 22:30:00'); 

唯一的缺點是,它改變的原型構建,在Date對象。雖然這被認爲是一種令人沮喪的做法,但我懷疑這些特殊的補充會影響你的申請。仍然有很多網站使用Prototype沒有任何問題。


編輯:通過正則表達式解析ragarding日期值。 請特別注意,考慮到不同瀏覽器中的不同date.toString()實現。下面是new Date().toString()遞給我:

  • IE9:"Mon Jul 11 14:50:45 UTC+0300 2011"
  • FF5:"Mon Jul 11 2011 14:51:08 GMT+0300 (FLE Daylight Time)"

如果你從服務器獲取這些字符串,你覺得添加庫只是日期爲頂你」用正則表達式會很好。

0

如果你想用一個正則表達式來做到這一點,你可以使用類似:

/^(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)-([012]\d|3[01])-[12]\d{3}$/ 

這不會JAN-01-1000之前或DEC-31-2999後匹配的日期。

注意:不要忘記檢查像FEB-30-2011