Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Регулярка нужна) (https://javascript.ru/forum/jquery/50996-regulyarka-nuzhna.html)

tenebrosus 20.10.2014 15:05

Регулярка нужна)
 
Помогите проверить дату. 20.10.2014

danik.js 20.10.2014 15:42

Регуляркой нельзя проверить дату. Можно только проверить синтаксис, но это не гарантирует верного ввода. Юзер может ввести например 30.02.2014

Проверка на синтаксис:
var re = /^\d{1,2}\.\d{2}\.\d{4}$/;
alert([ re.test('30.02.2014'), re.test('abc.02.2014'), re.test('1.12.2020') ]);


И причем тут jQuery?

tenebrosus 20.10.2014 15:51

Спасибо, как сделать, чтобы re.test('1.13.2020') или re.test('32.13.2020') тоже false были?

tenebrosus 20.10.2014 16:17

Чтобы было 2 числа, и диапазон- от 01(или 1) до 31 и до 12?

tenebrosus 20.10.2014 16:36

чего так не работает: var re = /^\d[1-31]\.\d[1-12]\.\d[2014-2015]$/;

terminator-101 20.10.2014 18:13

Цитата:

Сообщение от tenebrosus
диапазон- от 01(или 1) до 31 и до 12?

Если устраивает формат xx.xx.20xx, попробуй потестить такое:

re=/^(0[1-9]|[12]\d|3[01])\.(0[1-9]|1[012])\.20\d\d$/

terminator-101 20.10.2014 18:20

Цитата:

Сообщение от tenebrosus
чего так не работает

Ты вообще ахинею написал:) Начнем с того, что диапазон не может быть в формате [xx-xx], только [x-x]. Далее, первый шаблон \d совпадет с любым числовым символом, значит, 9xxx тоже сюда попадает. Ну и, so on, so forth...

terminator-101 20.10.2014 18:29

Цитата:

Сообщение от tenebrosus
2014-2015

А, ну если только 14-15 тогда

re=/^(0[1-9]|[12]\d|3[01])\.(0[1-9]|1[012])\.201[45]$/

Aetae 20.10.2014 19:27

terminator-101, написал нормально, только это всё всё равно фигня. Ибо есть февраль, есть даже високосный год...
Дату следует проверять либо чрез Date, либо через полноценную функцию-велосипед, учитывающую все тонкости. И первый вариант правильнее.


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