| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Regexpr варианты условий |
| Автор: rith2 19.4.2011, 13:18 |
| Привет! Изучаю regexpr. Необходимо контролировать ввод данных пользователями. Контроль за датой формата: дд.мм.гггг Пока что сделал так '^(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)\d\d' Проблема с установкой года - получается что год может начинать с "19" либо с "20" а потом любые две цифры от "0" до "9" . А возможно ли в regexpr устанавливать условия ? Дескать если первые две "19", то потом любые две цифры, а если первые две цифры "20", то третья 0 либо 1 а четвертая от 0 до 9 Необходимость именно такого жесткого ограничения действительно нужна. Так как многие юзеры забивают дату в базу достаточно криво. Прочитал кучу инфы, юзал поиск гугл. Чувствую что вот вот гдет решение, а как конкретно не понятно |
| Автор: rith2 19.4.2011, 16:45 | ||||
Не вариант. Пользователи заносят записи в БД FireBird через клиентскую программу. Менять ее нет возможности. Делаю UDF на делфи, которая проверяет вводимую информацию. В данном случае дату на соответствие маски - дд.мм.гггг. Нужно чтоб год был от 1910 до 2012 например. И вот как это условие сделать в regexpr ума ни приложу =( |
| Автор: Akella 19.4.2011, 16:46 |
| хм... а зачем полностью цитировать моё сообщение? Добавлено через 54 секунды а как тогда firebird пропускает некорректную дату? ответь! неправильый формат поля? |
| Автор: MetalFan 19.4.2011, 17:28 |
http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F#.D0.9F.D0.BE.D0.B8.D1.81.D0.BA_.D0.BF.D0.BE_.D1.83.D1.81.D0.BB.D0.BE.D0.B2.D0.B8.D1.8E |
| Автор: rith2 19.4.2011, 18:07 | ||
Немножко непривычно, что цитата в отдельном поле ) Потому что у поля хранящего дату тип varchar =) (не спрашивайте почему - структуру БД и клиентскую прогу спустило вышестоящее руководство) Кроме самого формата, еще нужно ограничить смысл вводимых данных - некоторые юзвери вводят например дату 10.10.1234 и прочую фигню |
| Автор: Akella 19.4.2011, 19:07 |
ну... теперь мучайтесь Добавлено через 4 минуты и 2 секунды http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5+%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0+%D0%B4%D0%B0%D1%82%D1%8B |
| Автор: rith2 20.4.2011, 06:03 |
| Спасибо большое! Про википедию както не додумался =) В общем вот так вот получилось '^(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](\b0*(19[1-9][0-9]|20[0-1][0-9])\b)'; Год от 1910 до 2019 =) |