Столкнулся с задачей в которой надо работать с датой рождения клиента.
В Simple создано дополнительное поле Дата рождения, тип поля Дата. В базе полный бардак... куча записей не являющихся датой.
Решил настроить Simple, но оказалось дополнительное поле с типом Дата не позволяет задать маску.
3 часа убил на решение пустяковой задачи ) Конечно можно было добавить метод для проверки даты в API, но мне захотелось сделать без кодинга.
Может кому-то пригодится.
Сначала изменил тип поля на Текст и прописал маску (всё равно все дополнительные поля Simple хранятся в базе как текст)
99.99.9999
Но маска позволяет ввести любые цифры и в базу улетит нечто не являющееся корректной датой.
Включил проверку регулярным выражением на соответствие формату ДД.ММ.ГГГГ и корректности даты с учетом високосных годов
^(((((0[1-9])|(1\d)|(2[0-8]))\.((0[1-9])|(1[0-2])))|((31\.((0[13578])|(1[02])))|((29|30)\.((0[1,3-9])|(1[0-2])))))\.((20[0-9][0-9])|(19[0-9][0-9])))|((29\.02\.(19|20)(([02468][048])|([13579][26]))))$
Вроде всё красиво получилось, но проверка регулярным выражением делает дополнительное поле обязательным (
Вот такая регулярка проверяет введённое значение на соответствие формату ДД.ММ.ГГГГ и позволяет пустое значение.
(^$)|(^(((((0[1-9])|(1\d)|(2[0-8]))\.((0[1-9])|(1[0-2])))|((31\.((0[13578])|(1[02])))|((29|30)\.((0[1,3-9])|(1[0-2])))))\.((20[0-9][0-9])|(19[0-9][0-9])))|((29\.02\.(19|20)(([02468][048])|([13579][26]))))$)
В итоге получилось как надо.