#php
#php
Вопрос:
function preveriDatum($string)
{
if (preg_match("^(3)?(?(1)[0-1]|(0)?(?(2)[1-9]|[12][0-9])).(0)?(?(3)[1-9]|1[0-2]).[1-9][0-9]{3}$^", $string))
return true;
else
return false;
}
действительно для 13.01.2010, но не для 13.1.2010. Могу ли я aso сделать его действительным для 13.1.2010?
Ответ №1:
Боже мой, что ты пытаешься здесь сделать? Можете ли вы просто поместить это в класс DateTime и проверить это таким образом? http://php.net/manual/en/book.datetime.php
В любом случае для регулярного выражения вы хотите * вместо a ? для 0. ? требуется наличие хотя бы одного экземпляра. Вместо (0)? используйте (0) *.
Ответ №2:
Вы могли бы использовать:
if (preg_match("^(0?[1-9]|[12][0-9]|3[01]).(0?[1-9]|1[012]).([1-9][0-9]{3})$", $string))
Лучше, конечно, использовать класс DateTime (http://php.net/manual/en/book.datetime.php ).
Ответ №3:
Измените .(0)?(?(3)[1-9]|1[0-2])
на .(0)?(?(3)[1-9]|1[0-2]|[1-9])
. Также рассмотрите возможность использования библиотеки дат.