我正在尝试编写一个验证来使用javascript检查日期格式。但是我仍然有错误信息,日期格式无效,即使我输入了正确的日期格式,我不知道我的正则表达式是否正确,我是在网上找到的
谢谢你的帮忙
function CheckDateFormat()
{
var StartDateform= document.getElementById('tblTarget').rows[1].cells[StartDate].getElementsByTagName('input')[0].value;
var pattern;
// Regular expression used to check if date is in correct format
pattern= new RegExp("^([0-9]{2})-([0-9]{2})-([0-9]{4})$");
if(StartDateform.match(pattern))
{
var date_array;
var day;
date_array = StartDateform.value.split('-');
day = date_array[0];
// Attention! Javascript consider months in the range 0 - 11
var month;
var year;
month= date_array[1] - 1;
year= date_array[2];
// This instruction will create a date object
//source_date = new Date(year,month,day);
source_date = new Date(day,month,year);
if(year != source_date.getFullYear())
{
alert('Year is not valid!');
return false;
}
if(month != source_date.getMonth())
{
alert('Month is not valid!');
return false;
}
if(day != source_date.getDate())
{
alert('Day is not valid!');
return false;
}
}
else
{
alert('Date format is not valid!');
InvalidFlag=1;
return false;
}
return true;
}发布于 2013-07-15 22:43:01
您应该考虑使用像Moment.js这样的库,它将为您处理日期解析和验证。它将比您的正则表达式更灵活,可以接受各种格式。
如果您想坚持使用正则表达式,regexpal是测试JavaScript正则表达式的一个很好的站点。看起来您的正则表达式成功地匹配了dd-mm-yyyy格式的日期。你的测试日期是什么时候没有起作用?因为^和$字符匹配字符串的开始和结束,所以日期不能有任何额外的空格。例如:
"05-07-1998"将匹配正则表达式。
"05-07-1998 "不会匹配它。
编辑:
如果您试图获取dd/mm/yyyy格式的日期,则需要使用Moment.js或将正则表达式更改为:^([0-9]{2})/([0-9]{2})/([0-9]{4})$。
由于您使用/而不是-来分隔日期,因此还需要更改下面这一行:
date_array = StartDateform.value.split('/'); // must split on '/' instead of '-'https://stackoverflow.com/questions/17656935
复制相似问题