2016-07-15 2 views
0

Ниже приведено регулярное выражение для формата mm/dd/yyyy. НО выражение также верно относится к формату mmddyyyy. Он должен возвращать false без '/'.Регулярное выражение в формате mm/dd/yyyy

Любой может изменить его на нужное регулярное выражение?

/^(((0[13-9]|1[012])[-/]?(0[1-9]|[12][0-9]|30)|(0[13578]|1[02])[-/]?31|02[-/]?(0[1-9]| 
1[0-9]|2[0-8]))[-/]?[0-9]{4}|02[-/]?29[-/]?([0-9]{2}(([2468][048]|[02468][48])|[13579][26])| 
([13579][26]|[02468][048]|0[0-9]|1[0-6])00))$/ 
+3

заменить каждый '[- /]'? с [[/ /] ' – fcalderan

+0

/^ (((0 [13-9] | 1 [012]) [- /] (0 [1-9] | [12] [0-9] | 30) | (0 [13578] | 1 [02]) [- /] 31 | 02 [- /] (0 [1-9] | 1 [0-9] | 2 [0-8])) [- /] [0 -9] {4} | 02 [- /] 29 [- /] ([0-9] {2} (([2468] [048] | [02468] [48]) | [13579] [26]) | ([13579] [26] | [02468] [048] | 0 [0-9] | 1 [0-6]) 00)) $/ (Это также регулярное выражение для гораздо большего количества дат типа dd- mm-yyyy) –

ответ

0

Это регулярное выражение вы хотите

/^(((0[13-9]|1[012])[-/](0[1-9]|[12][0-9]|30)|(0[13578]|1[02])[-/]31|02[-/](0[1-9]|1[0-9]|2[0-8]))[-/][0-9]{4}|02[-/]29[-/]([0-9]{2}(([2468][048]|[02468][48])|[13579][26])|([13579][26]|[02468][048]|0[0-9]|1[0-6])00))$/ 

[-/]? проверит 0 или 1 вхождения '/' в строке. [-/] будет проверять только одно вхождение.

+0

Это то, что мне нужно. Большое спасибо. :) –

0

Попробуйте RegEx, его работы

var date = "21062016";//"21/06/2016"; 
 
var rgexp = /(^(((0[1-9]|1[0-9]|2[0-8])[/](0[1-9]|1[012]))|((29|30|31)[/](0[13578]|1[02]))|((29|30)[/](0[4,6,9]|11)))[/](19|[2-9][0-9])\d\d$)|(^29[/]02[/](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)/; 
 
var validate = rgexp.test(date); 
 
alert(validate);

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