您好,我正在尝试验证格式为:2011 年 3 月 3 日或 2007 年 12 月 12 日的日期。我目前有一个在 3 个字符月份失败的正则表达式。我可能只需要调整它以使其正常工作。
//function isDate(txtDate) {
function isDate(sender, args) {
var currVal = document.getElementById('<%=txtChange_Date.ClientID%>').value;
if (currVal == '')
return false;
//Declare Regex
var rxDatePattern = /^(\d{1,2})(\/|-)[a-zA-Z]{3}(\/|-)(\d{4})$/;
var dtArray = currVal.match(rxDatePattern); // is format OK?
if (dtArray == null)
return false;
//formerly //Checks for dd/mm/yyyy format.
//Checks for dd-MMM-yyyy format.
var dtDay = dtArray[1];
var dtMonth = dtArray[3];
var dtYear = dtArray[4];
switch(dtMonth)
{
case 'Jan':
dtMonth = '01';
break;
case 'Feb':
dtMonth = '02';
break;
case 'Mar':
dtMonth = '03';
break;
case 'Apr':
dtMonth = '04';
break;
case 'May':
dtMonth = '05';
break;
case 'Jun':
dtMonth = '06';
break;
case 'Jul':
dtMonth = '07';
break;
case 'Aug':
dtMonth = '08';
break;
case 'Sep':
dtMonth = '09';
break;
case 'Oct':
dtMonth = '10';
break;
case 'Nov':
dtMonth = '11';
break;
case 'Dec':
dtMonth = '12';
break;
}
if (dtMonth < 1 || dtMonth > 12)
return false;
else if (dtDay < 1 || dtDay > 31)
return false;
else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31)
return false;
else if (dtMonth == 2) {
var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
if (dtDay > 29 || (dtDay == 29 && !isleap))
return false;
}
return true;
}