正则表达式日期验证格式

时间:2014-02-21 03:49:40

标签: jquery regex validation date

任何人都可以帮我如何将此jquery验证的日期格式从YYYY-MM-DD更改为MM / DD / YYYY。

示例:

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})))$/);

但我仍然无法得到我想要的正确验证..

以下是代码:

            "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"
            }

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

3 个答案:

答案 0 :(得分:0)

我想你应该试试这个。

var pattern = new RegExp(/^\d{4}-((0\d)|(1[012]))-(([012]\d)|3[01])$/);

但是这不会检查一个月中的日子,例如2月31日。但是使用RegEx这将是一个很长的路要走。

答案 1 :(得分:0)

(0?[1-9]|1[012])

(0?[1-9]|[12][0-9]|3[01])

(19|20)?[0-9]{2}

缺陷:

  • 将于2月29日至31日,12月31日等等。

答案 2 :(得分:0)

尝试以下正则表达式

请注意,它只检查未检查的格式是年份是否为闰年

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);

        }