После знака $ у вас есть пробел, поэтому введенные данные не совпадают.
[0-9]{2}\/[0-9]{2}\/[0-9]{4}$ |
// here __^
Удалите его ([0-9]{2}\/[0-9]{2}\/[0-9]{4}$
) и, если вы хотите принять пустую строку, добавьте пустую строку с помощью группу и добавьте начало привязки строки:
^([0-9]{2}\/[0-9]{2}\/[0-9]{4}|)$
или, что лучше, сделайте группу необязательной
^([0-9]{2}\/[0-9]{2}\/[0-9]{4})?$
Демонстрация и объяснение