首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式日期验证格式

正则表达式日期验证格式
EN

Stack Overflow用户
提问于 2014-02-21 11:49:40
回答 3查看 581关注 0票数 0

有人能帮我把这个jquery验证的日期格式从YYYY-MM-DD改为MM/DD/YYYY吗?

示例:

代码语言:javascript
复制
2014-02-21 must be 02/21/2014

我试图改变这一点:new RegExp(/^(\d{4})[\/\-\.](0?[1-9]|1[012])[\/\-\.](0?[1-9]|[12][0-9]|3[01])$/);

收件人:new RegExp(/^((0?[13578]|10|12)(-|\/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[01]?))(-|\/)((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1}))|(0?[2469]|11)(-|\/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[0]?))(-|\/)((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1})))$/);

但是我仍然不能得到我想要的正确的验证。

代码如下:

代码语言:javascript
复制
            "date": {
                //  Check if date is valid by leap year
        "func": function (field) {
                var pattern = new RegExp(/^(\d{4})[\/\-\.](0?[1-9]|1[012])[\/\-\.](0?[1-9]|[12][0-9]|3[01])$/); //<---- The Original Pattern of YYYY-MM-DD
                var match = pattern.exec(field.val());
                if (match == null)
                   return false;

                var year = match[1];
                var month = match[2]*1;
                var day = match[3]*1;
                var date = new Date(year, month - 1, day); // because months starts from 0.

                return (date.getFullYear() == year && date.getMonth() == (month - 1) && date.getDate() == day);
            },
         "alertText": "* Invalid date, must be in YYYY-MM-DD format"
            }

请帮帮我..谢谢..:)

EN

回答 3

Stack Overflow用户

发布于 2014-02-21 11:57:54

我觉得你应该试试这个。

代码语言:javascript
复制
var pattern = new RegExp(/^\d{4}-((0\d)|(1[012]))-(([012]\d)|3[01])$/);

但是这不会检查一个月中的日期,例如2月31日,但是对于RegEx来说,这将是一种很长的方式。

票数 0
EN

Stack Overflow用户

发布于 2014-02-21 11:58:50

月份

代码语言:javascript
复制
(0?[1-9]|1[012])

天数

代码语言:javascript
复制
(0?[1-9]|[12][0-9]|3[01])

年份

代码语言:javascript
复制
(19|20)?[0-9]{2}

  • 将匹配2月29-31日、12月31日等。
票数 0
EN

Stack Overflow用户

发布于 2014-02-21 12:10:19

尝试以下正则表达式

注意,它只检查了格式,没有检查年份是不是闰年

代码语言:javascript
复制
function validateDate(testDate){    

    var date_regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/ ;
    return date_regex.test(testDate);

        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21924911

复制
相关文章

相似问题

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