Регулярка даты

Тема в разделе "Регулярные выражения", создана пользователем afonya09, 14 авг 2010.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. afonya09

    afonya09

    Регистр.:
    31 янв 2009
    Сообщения:
    260
    Симпатии:
    18
    Помогите с регулярным выражением для даты.

    Дата в таком формате 2010-08-14
     
  2. Agler

    Agler Постоялец

    Регистр.:
    17 авг 2008
    Сообщения:
    94
    Симпатии:
    13
    20([0-9][0-9])-(0[1-9]|1[0-2]))-(0[1-9]|[1-2][0-9]|3[0-1])
    Должна быть активной до 2099 года. Проверь сначала. Это жесткая регулярка. Если ты парсишь что то и уверен что даты в правильном формате то можно упростить (для скорости)
     
    afonya09 нравится это.
  3. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Самый простой вариант - использовать strtotime() от тех данных, что тебе передали, и смотреть что получилось. Так и дату можно по-разному вводить, и ошибится в то же время нельзя, потому что при ошибке будет или 0 или 1 января 1970.

    Если этот вариант не подходит, то тогда да, регуляркой.
    Код:
    ^\d{4}-\d{2}-\d{2}$
    или
    ^\d{4}-\d{1,2}-\d{1,2}$ - если можно указать месяц и число одной цифрой
    (Например 2, а не 02, т.е. 1970-2-18 а не 1970-02-18)
    
     
    afonya09 нравится это.
  4. antest

    antest Прохожие

    можно еще так
    Код:
    <?
    $str = "2010-08-14";
    $reg = '/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/';
    if(preg_match($reg,$str,$match)){
    	print_r($match); 
    }
    ?>
    результат будет вот такой:
    Код:
    Array
    (
        [0] => 2010-08-14
        [1] => 2010
        [2] => 08
        [3] => 14
    )
     
Статус темы:
Закрыта.