Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   регулярные выражения (https://javascript.ru/forum/misc/42439-regulyarnye-vyrazheniya.html)

ioane 26.10.2013 18:08

регулярные выражения
 
нужно с помощью регулярных выражений проверить дату на соответствие следующим образцам:
мм/дд/гггг, м-дд-гггг, ммддгггг, мм.дд.гггг
вот это рабочее выражение
/^((0\d)|(1[12])|([1-9]))([-\/ .])?(([012]\d)|(3[01]))([-/\ .])?([012]\d{3})$/

однако оно не проверяет условие присутствия в дате только одного разделителя (например, мм.дд/гггг такая запись считается правильной)
пытался сделать следующее, но не работает
/^((0\d)|(1[12])|([1-9]))(([-][^.\/])|([\/][^-.])|([.][^-\/]))?(([012]\d)|(3[01]))(([-][^.\/])|([\/][^-.])|([.][^-\/]))?([012]\d{3})$/

что нужно исправить?

Яростный Меч 27.10.2013 01:04

/^(0?[1-9]|1[012])([.\/-]?)(0[1-9]|[12]\d|3[01])\2[012]\d{3}$/


первый разделитель [.\/-]? находится во вторых по счету круглых скобках и попадает во "2-ю группу".
второй разделитель обозначен \2 - т.е. он должен быть как значение "2-й группы"


Часовой пояс GMT +3, время: 05:34.