首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查数据格式的Javascript无法正常工作

问检查数据格式的Javascript无法正常工作
EN

Stack Overflow用户
提问于 2013-07-15 22:40:08
回答 1查看 116关注 0票数 0

我正在尝试编写一个验证来使用javascript检查日期格式。但是我仍然有错误信息,日期格式无效,即使我输入了正确的日期格式,我不知道我的正则表达式是否正确,我是在网上找到的

谢谢你的帮忙

代码语言: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;
}
EN

回答 1

Stack Overflow用户

发布于 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})$。

由于您使用/而不是-来分隔日期,因此还需要更改下面这一行:

代码语言:javascript
复制
date_array = StartDateform.value.split('/'); // must split on '/' instead of '-'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17656935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档