2013-06-23 48 views
1

您好我目前堅持如何分割我的正則表達式日期,然後測試是否輸入日期是過去。如果是這樣我想提醒一下。需要幫助驗證日期是否過去使用javascript

我知道我需要如何拼接我的正則表達式,但我不確定如何做到這一點,任何幫助將不勝感激。下面是我的腳本到目前爲止它是一個相當長的正則表達式,但它涵蓋了所有內容,包括閏年,但就像我說我知道需要通過substr或splice將其分解。

//start of datefield 
var dateformat=/^(?:(?:31\/(?:0[13578]|1[02])|(?:29|30)\/(?:0[13-9]|1[012])|(?:0[1-9]|1\d|2[0-8])\/(?:0[1-9]|1[0-2]))\/[2-9]\d{3}|29\/02\/(?:[2-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[3579][26])00))$/; 

if (!date.match(dateformat)) 
{ 
    alert("format incorrect use dd/mm/yyyy make sure you are entering correct days to the month remember 30 days have september, april, june & november, only 28 days in february unless leap year next is 2016"); 
    return false; 
} 
//end date field 
+4

我的建議是:溝是正則表達式。檢查我的答案在這裏,這應該有助於http://stackoverflow.com/questions/11218181/best-way-to-validate-date-string-format-via-jquery/11218271#11218271 – elclanrs

+3

爲什麼你需要使用正則表達式? – Blender

+0

使用他人的工作! http://momentjs.com/ –

回答

1

簡單

date = "12/11/2009"; 
if(new Date(date) < new Date()){ 
    // a 
} else { 
    // b 
} 
+0

請注意,非標準日期字符串的解析依賴於實現。 OP要求d/m/y,但大多數瀏覽器將字符串視爲m/d/y(即2009年12月11日)。所以應該手動分析日期字符串以確保它們按需處理,而不是偶然發生。 ;-) – RobG

+0

嗨羅伯感謝您的幫助,所以我添加你寫到我的腳本的底部,對不起,我對JavaScript很新,並認爲我可以使用我的正則表達式來驗證正確的dat,但然後以某種方式從然後檢查它是否在過去,你可以告訴我一個工作腳本:1.檢查日期是否有效,包括檢查閏年,然後檢查一次以檢查輸入的日期是否是在過去的日期如果如此顯示警報,感謝您花時間幫助。 – adam

+0

@亞當 - 我想我的答案是這兩個。如果你喜歡,你可以將它結合在一個函數中,但是大多數人更喜歡實用函數只能做一件事。 – RobG

1

使用正則表達式來制定,如果日期是無效或之前或之後,其他時間不是做這項工作最簡單的方法。將字符串轉換爲日期對象並測試它更容易。

因此解析字符串來創建一個日期對象並從那裏開始。您不應該將日期字符串解析爲日期對象,因爲它大部分取決於實現(ECMA-262指定ISO8601的一個版本,但它並不受所有正在使用的瀏覽器支持)。所以,如果你的格式日/月/年你可以這樣做:

function isDateHistory(s) { 
    s = s.split('/'); 
    return (new Date(s[2], --s[1], s[0])) < (new Date()); 
} 

alert(isDateHistory('15/6/2013')); // true 
alert(isDateHistory('15/7/2013')); // false 

您還可以使用驗證日期:

function validateDate(dateString) { 
    var s = dateString.split('/'); 
    var d = new Date(s[2], --s[1], s[0]); 
    return d && d.getFullYear() == s[2] && d.getDate() == s[0]; 
} 
+0

謝謝搶劫我非常抱歉,但我仍然不明白什麼是實際寫在下面我已附加我的整個腳本它是一個完整的形式我唯一需要糾正的是日期字段,請你可以一步一步地告訴我如何正確地插入到我的腳本,你的幫助和時間是非常讚賞。 – adam