2015-07-16 1 views
0

У меня есть поле ввода текста, которое необходимо проверить. Пользователь должен только ввести дату в формате dd-Mmm-yyyy. ex: 01-Jun-2013, 31-Aug-2015 и так далее. Или они должны иметь возможность вводить T + 1, T + 2, ... T + 99.Regex для подтверждения даты в формате dd-Mmm-yyyy

Какой шаблон регулярного выражения я мог бы использовать для проверки обоих из них. Я думаю, что для проверки DD-Mmnm-гггг, следующее регулярное выражение работы:

^(([0-9])|([0-2][0-9])|([3][0-1]))\-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\-\d{4}$ 

Пожалуйста, помогите мне с этим!

Обновление: мне просто нужен шаблон регулярных выражений для одной буквы Т, за которой следует «+» и число от «1 до 99». т. е. [T + 1 ... T + 99]. Пользователь должен иметь возможность вводить эти числа только в текстовое поле.

+2

Так вы задаете вопрос или дать ответ в отношении регулярных выражений, вы показали? Разве это не работает для вас? Можете ли вы привести примеры совпадений, которые не являются неожиданными? –

+1

Попробуйте следующее: http://www.regexr.com/3bdel –

+4

BTW Вам может быть полезно использовать некоторые классы проверки даты и/или даты, чтобы сделать это, а не регулярное выражение, поскольку регулярное выражение будет иметь трудности с поиском проблем например, високосные годы или недействительные дни месяца, такие как ввод «31-фев-2015». –

ответ

2

Т с последующим "+" и число в диапазоне от "1" до 99

Попробуйте с: T\+?\d{0,2} где:

  1. T буквального "T";
  2. \+? - знак нуля или один плюс «+» с обратной косой чертой (или другим управляющим символом, зависит от языка) - без него он будет рассматриваться как метасимвол «+»; дополнительный '?' петь означает, что характер до этого мог появиться, но он не нужен
  3. \d{0,2} - от нуля до двух цифр;

DEMO

+0

Большое спасибо. Если мне также нужно включить T с указанным выше регулярным выражением. Мне нужно сделать что-то вроде этого: ([T] | [T \ + \ d {0,2}]). Это работает нормально. Но я не знаю, есть ли другой способ. Я учу это. – ShellZero

+1

@ShellZero Я обновил свой ответ –

+0

Удивительный. Благодарю. :) – ShellZero

2

Не уверен, что вы имеете в виду Т + 1, и т.д., но вот тот минимум, который делает то, что вам нужно:

^[01][0-9]-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{4}$

Вы также можете использовать i флаг, чтобы сделать все это чувствительно к регистру ,

http://www.regexr.com/3bdeu

2

Если я правильно понимаю ваш вопрос, я добавил возможность ввести соответствующий (T\+[0-9]+) коснуться к исходному регулярному выражению.

^((([0-9])|([0-2][0-9])|([3][0-1]))\-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\-\d{4})|(T\+[0-9]+)$