Ответ 1
Попробуйте следующее:
^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$
или использовать его, если вам нужно найти дату внутри строки, например The date is 2017-11-30
\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])*
что такое регулярное выражение для формата даты yyyy-mm-dd?
Я хочу проверить электронную почту от edittext и проверить, совпадает ли она с регулярным выражением.
Попробуйте следующее:
^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$
или использовать его, если вам нужно найти дату внутри строки, например The date is 2017-11-30
\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])*
Простым будет
\d{4}-\d{2}-\d{2}
но это не ограничивает месяц до 1-12 и дней от 1 до 31.
Есть более сложные проверки, как в других ответах, кстати довольно умные. Тем не менее вам нужно проверить действительную дату, потому что нет проверок, если месяц имеет 28, 30 или 31 день.
Вы можете использовать шаблон регулярных выражений для формата даты (yyyy-mm-dd):
((19 | 20)\д\г) - (0 [1-9] | 1 [012]?) - (0 [1-9] |? [12] [0-9] | 3 [ 01])
Вы можете найти пример для проверки даты в следующей ссылке:
вы можете проверить это выражение:
^\d{4}[\-\/\s]?((((0[13578])|(1[02]))[\-\/\s]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\-\/\s]?(([0-2][0-9])|(30)))|(02[\-\/\s]?[0-2][0-9]))$
Описание:
проверяет дату yyyy-mm-dd, yyyy mm dd или yyyy/mm/dd
гарантирует, что день находится в допустимом диапазоне за месяц - НЕ проверяет 29 февраля в високосный год, только то, что февраль может иметь 29 дней
Матчи (проверено): 0001-12-31 | 9999 09 30 | 2002/03/03