2014-10-08 3 views
0

Как проверить дату в обоих формате (мм-дд-уу и мм/дд/гг), в настоящее время следующие коды только Проверяет (мм-дд-гггг)Подтвердить Дата и в формате

function isValidDate(dateString) { 
    if (!/^\d{2}\-\d{2}\-\d{2}$/.test(dateString)) { 
     return false; 
    } 
    var parts = dateString.split("-"); 
    var day = parseInt(parts[1], 10); 
    var month = parseInt(parts[0], 10); 
    if (month == 0 || 12 < month) { 
     return false; 
    } 
    var monthLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 
    return (0 < day && day <= monthLength[month - 1]); 
} 
+0

[Здесь] (https://stackoverflow.com/questions/16115584/java-processing-multiple-possible-unknown-date-time-formats) аналогичный вопрос в java. – parchment

+0

Как насчет високосного года? – Toto

ответ

0

изменения регулярное выражение для

function isValidDate(dateString) { 
    // use - or/as the seprator 
    if (!/^\d{2}([-\/])\d{2}\1\d{2}$/.test(dateString)) { 
     return false; 
    } 

    //split using - or/
    var parts = dateString.split(/[-\/]/); 
    var day = parseInt(parts[1], 10); 
    var month = parseInt(parts[0], 10); 
    if (month == 0 || 12 < month) { 
     return false; 
    } 

    var monthLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 
    return (0 < day && day <= monthLength[month - 1]); 
} 
+0

@SalmanA да ... исправлено, что с использованием обратной ссылки –

0

Этот шаблон будет проверять формат даты (мм/дд/гг)

private static final String DATE_PATTERN = 
      "((0?[1-9]|1[012])/0?[1-9]|[12][0-9]|3[01])/(\\d\\d))"; 
0

Используйте RegEx, чтобы проверить, если вы дата синтаксически корректен. Используйте Date объект, чтобы проверить, если это семантически правильно:

function checkDate(dateText) { 
    var match = dateText.match(/^(\d{2})([-\.\/])(\d{2})\2(\d{2})$/); 
    if (match === null) { 
     return false; 
    } 
    var mm = +match[1], 
     dd = +match[3], 
     yy = +match[4], 
     dt = new Date(yy + 2000, mm - 1, dd); 
    return dt.getFullYear() == yy + 2000 && 
     dt.getMonth() == mm - 1 && 
     dt.getDate() == dd; 
} 

checkDate("12/12/12") // true 
checkDate("12/12-12") // false 
checkDate("04/30/14") // true 
checkDate("04/31/14") // false 
checkDate("02/29/12") // true 
checkDate("02/29/14") // false 

Обратите внимание, что этот пример отображает 00 год ... 99 до 2000 ... 2099.

Смежные вопросы