验证html文本输入字段是否与任何日期格式匹配

时间:2014-02-26 15:35:47

标签: jquery regex date

我有一个输入日期的文本输入字段。由于各种原因,我无法使用datepicker。我希望能够以任何格式输入日期,例如d / m / yy或dd / mm / yy或dd / mm / yyyy ......等等

输入其中一种格式并标签后,我希望将文本值(假设输入有效)设置为dd / mm / yyyy格式的输入日期。因此,例如,如果您已输入1/3/14,我希望将文本设置为01/03/2014。

到目前为止,我已经达到了这个目标,但这似乎并不合适: -

          $('.someDate').on("blur", function (event) {

                var dateRegEx = '^(?:(1[0-2]|0?[1-9])[- /.](3[01]|[12][0-9]|0?[1-9])|(3[01]|[12][0-9]|0?[1-9])[- /.](1[0-2]|0?[1-9]))[- /.](?:[0-9]{2})?[0-9]{2}$';
                var day = 0;
                var month = 0;
                var year = 0;
                var matchArray = $(this).val().match(dateRegEx);
                month = matchArray[0];
                day = matchArray[1];
                year = matchArray[2];
//work out what is the year, month, date etc and set the input text to this
    });

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

我用不同的方法为你的问题提供了一个工作小提琴,在我眼中不那么复杂。首先,我尝试获取日期分隔符。然后我按日期分隔符分割日期并形成一个新日期。工作小提琴:http://jsfiddle.net/2dVwW/

HTML:

<input id="date" type="text" value="01.03.15" />
<button id="transform">Transform</button>Date formatted:<span id="dateFormatted"></span>

JavaScript的:

$('#transform').click(function () {
    var date = $('#date').val();
    var sepRegEx = '(?:[- /.])';
    var sepArray = date.match(sepRegEx);

    if (!sepArray) {
        alert("Unknown seperator");
        return false;
    }

    var sep = sepArray[0];
    var dateArray = date.split(sep);
    var month = dateArray[0];
    var day = dateArray[1];
    var year = dateArray[2];

    if (month.length == 1) {
        month = '0' + month;
    } else if (month.length != 2) {
        alert("Wrong month format");
        return false;
    }

    if (day.length == 1) {
        day = '0' + day;
    } else if (month.length != 2) {
        alert("Wrong day format");
        return false;
    }

    if (year.length == 2) {
        year = '20' + year;
    } else if (year.length != 4) {
        alert("Wrong year format");
        return false;
    }

    var dateFormatted = day + '/' + month + '/' + year;
    $('#dateFormatted').text(dateFormatted);
});