2013-07-06 2 views
3

Я плохо разбираюсь в регулярном выражении. Я получил код для проверки формата dd/mm/yyyy, который также проверяет високосный год, я попытался изменить его, чтобы заставить его работать на mm/dd/yyyy, но все они потерпели неудачу.javascript - регулярное выражение для подтверждения даты в формате mm/dd/yyyy

Может ли кто-нибудь изменить его, чтобы проверить формат mm/dd/yyyy?

Регулярное выражение:

^(((0 [1-9] | [12] \ д | 3 [01])/(0 [13578] | 1 [02])/((19 | [2-9] \ d) \ d {2})) | ((0 [1-9] | [12] \ д | 30)/(0 [13456789] | 1 [012])/((19 | [2-9] \ d) \ d {2})) | ((0 [1-9] | 1 \ д | 2 [0-8])/02/((19 | [2-9] \ г) \ д {2})) | (29/02/((1 [6-9] | [2-9] \ г) (0 [48] | [2468] [048] | [13579] [ 26]) | ((16 | [2468] [048] | [3579] [26]) 00)))) $

Ответ Привет всем, спасибо за помощь от всех вас, наконец, снова проанализировав регулярное выражение, я получил свой ответ для проверки формата mm/dd/yyyy

Регулярное выражение:

/^ (((0 [13578] | 1 [02])/(0 [1-9] | [12] \ д | 3 [01])/((19 | [2-9] \ d) \ d {2})) | ((0 [13456789] | 1 [012])/(0 [1-9] | [12] \ д | 30)/((19 | [2-9] \ d) \ d {2})) | (02/(0 [1-9] | 1 \ д | 2 [0-8])/((19 | [2-9 ] \ d) \ d {2})) | (02/29/((1 [6-9] | [2-9] \ г) (0 [48] | [2468] [048] | [13579] [26]) | ((16 | [2468] [048] | [3579] [26]) 00)))) $/г

+2

Лучше попытаться построить объект Date из входной строки, и если он действителен (не является нулевым), дата действительна. Потому что проблемы, такие как високосный год и количество дней в месяц, будут легко решены. –

+3

Использование регулярного выражения - плохая идея. Люди не могут рассчитывать на летные месяцы в самые лучшие времена - попытка сделать это в регулярном выражении была бы ужасной. –

+0

Посмотрите на этот ответ, чтобы дать вам несколько альтернативных идей: http://stackoverflow.com/a/16464768/592253 – Xotic750

ответ

5

Попробуйте с

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

Но лучше к и se регулярное выражение использовать Date object из вашей строки даты, а затем проверить его.

+0

Спасибо за ответ, но мне нужно проверить дату високосного года, а также – Sathish

+0

он не сделал этого .. ?? вы его проверили ..? – Gautam3164

+0

Високосный год не будет в другом формате? – iConnor