Прикрепите ваше регулярное выражение:
preg_match('/^([0-9]{4})-([0-9]{2})$/', $expirationDate, $matches)
Ваше регулярное выражение не сделало то, что вы ожидали, потому что оно соответствует подстроке "0111-02" в "20111-02".
Якоря ^
и $
соответствуют определенным позициям во входной строке: ^
соответствует началу строки, а $
соответствует концу.
Обратите также внимание, что нет необходимостиэкранируйте дефис, поскольку он имеет только специальную функцию в []
.