用于检查数据格式的Javascript无法正常工作

Javascript to check data format is nor working properly

本文关键字:常工作 工作 数据格式 检查 Javascript 用于      更新时间:2023-09-26

我正在尝试编写一个验证,以使用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;
}

您应该考虑使用Moment.js这样的库来处理日期解析和验证。它将比您的regex更灵活,并且可以接受各种格式。

如果您想坚持使用正则表达式,regexpal是测试JavaScriptregex的好站点。看起来您的正则表达式成功地匹配了格式为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 '-'