![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| rith2 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 29.4.2008 Репутация: нет Всего: нет |
Привет!
Изучаю 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 - 20.4.2011, 06:04 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
| rith2 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 29.4.2008 Репутация: нет Всего: нет |
Не вариант. Пользователи заносят записи в БД FireBird через клиентскую программу. Менять ее нет возможности. Делаю UDF на делфи, которая проверяет вводимую информацию. В данном случае дату на соответствие маски - дд.мм.гггг. Нужно чтоб год был от 1910 до 2012 например. И вот как это условие сделать в regexpr ума ни приложу =( |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
хм... а зачем полностью цитировать моё сообщение?
Добавлено через 54 секунды а как тогда firebird пропускает некорректную дату? ответь! неправильый формат поля? |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
| rith2 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 29.4.2008 Репутация: нет Всего: нет |
Немножко непривычно, что цитата в отдельном поле ) Потому что у поля хранящего дату тип varchar =) (не спрашивайте почему - структуру БД и клиентскую прогу спустило вышестоящее руководство) Кроме самого формата, еще нужно ограничить смысл вводимых данных - некоторые юзвери вводят например дату 10.10.1234 и прочую фигню |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
ну... теперь мучайтесь Добавлено через 4 минуты и 2 секунды http://www.google.com/search?ie=UTF-8&...%B0%D1%82%D1%8B |
|||
|
||||
| rith2 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 29.4.2008 Репутация: нет Всего: нет |
Спасибо большое! Про википедию както не додумался =) В общем вот так вот получилось
'^(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 =) |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |