2013-04-12 76 views
1

的Java腳本函數限制日期和月份的正則表達式表達在javascript

<script language="JavaScript"> 

function checkdate(date1){ 
var validformat=/^\d{2}\/\d{2}\/\d{4} \d{2}\:\d{2}\:\d{2}$/ 
if(!validformat.test(date1.value)){ 
alert("Invalid Date"); 
document.form.date1.value=""; 
} 

} 

上述運作良好!但我想相應地限制個月

my format = mm/dd/YYYY hh:mm:ss 

月不應該超過12且小於1相同,日期不應該超過31且小於1;

還有一件事!

2013年2月2日00:00:00有效日期,但2013年2月2日00:00:00顯示爲無效日期。

如何控制這兩種情況?

回答

1

日期時間正則表達式爲米/ d/YYYY HH:MM:SSMM/DD/YYYY HH:MM:SS

/^(0?[1-9]|1[012])\/(0?[1-9]|[12]\d|3[01])\/[12]\d{3} ([01]\d|2[0-3])\:[0-5]\d\:[0-5]\d$/ 

解釋演示:http://regex101.com/r/bS0gB6

+0

是的!但爲什麼這個0/0/2013也是有效的日期? :) –

+0

是的!你得到分數;) –

+0

2/2/2013 00:00:00和2/2/2013 23:59:59工作,但2/2/2013 12:30:20不工作! –

0

您可以查看this網站,該網站允許您爲數字範圍創建正則表達式。這就是說,你應該使用你正在使用的語言(Javascript)提供的數值運算符來進行數字操作,而不是正則表達式。

或者,您可以使用在JQuery中創建的DateTime Picker,如here所示。

+0

VAR validformat =/^ \ d {2} \/\ d {2} \/\ d {4} \ d {2} \:\ d {2} \:\ d {2} $ /您可以在此追加嗎?我沒有任何想法正則表達式,只是從網上覆制粘貼 –

+0

@ShahidGhafoor:JQuery控件允許您指定日期和時間格式,如下所示:'$('#dateTextBox')。datetimepicker({timeFormat:「HH:mm 「,dateFormat:」dd-mm-yy「})'。 – npinti

1

你可以試試下面的方法:

var comp = value.split('/'); 
var d = parseInt(comp[0], 10); 
var m = parseInt(comp[1], 10); 
var y = parseInt(comp[2], 10); 
var date = new Date(y, m - 1, d); 
var validDateFormat = false; 
if (date.getFullYear() == y && date.getMonth() + 1 == m && date.getDate() == d) { 
    validDateFormat = true; 
} 

如果validDateFormat是真實的,日期是有效的。