Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Regexpr варианты условий, regexpr 
V
    Опции темы
rith2
Дата 19.4.2011, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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

Необходимость именно такого жесткого ограничения действительно нужна. Так как многие юзеры забивают дату в базу достаточно криво.

Прочитал кучу инфы, юзал поиск гугл. Чувствую что вот вот гдет решение, а как конкретно не понятно  smile 



Это сообщение отредактировал(а) rith2 - 20.4.2011, 06:04
PM MAIL   Вверх
Akella
Дата 19.4.2011, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(rith2 @  19.4.2011,  13:18 Найти цитируемый пост)
юзеры забивают дату

что делают?  smile  smile

Добавлено через 31 секунду
Цитата(rith2 @  19.4.2011,  13:18 Найти цитируемый пост)
Прочитал кучу инфы, юзал поиск гугл. Чувствую что вот вот гдет решение, а как конкретно не понятно

Use TDateTimePicker, Luke
PM MAIL   Вверх
rith2
Дата 19.4.2011, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 29.4.2008

Репутация: нет
Всего: нет



Цитата(Akella @ 19.4.2011,  14:03)
Цитата(rith2 @  19.4.2011,  13:18 Найти цитируемый пост)
юзеры забивают дату

что делают?  smile  smile

Добавлено @ 14:04
Цитата(rith2 @  19.4.2011,  13:18 Найти цитируемый пост)
Прочитал кучу инфы, юзал поиск гугл. Чувствую что вот вот гдет решение, а как конкретно не понятно

Use TDateTimePicker, Luke

Не вариант. Пользователи заносят записи в БД FireBird через клиентскую программу. Менять ее нет возможности. Делаю UDF на делфи, которая проверяет вводимую информацию. В данном случае дату на соответствие маски - дд.мм.гггг. Нужно чтоб год был от 1910 до 2012 например. И вот как это условие сделать в regexpr ума ни приложу =(
PM MAIL   Вверх
Akella
Дата 19.4.2011, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



хм... а зачем полностью цитировать моё сообщение? smile

Добавлено через 54 секунды
а как тогда firebird пропускает некорректную дату? ответь! неправильый формат поля?
PM MAIL   Вверх
MetalFan
Дата 19.4.2011, 17:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(rith2 @  19.4.2011,  13:18 Найти цитируемый пост)
А возможно ли в regexpr устанавливать условия ? 

Поиск по условию


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
rith2
Дата 19.4.2011, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 29.4.2008

Репутация: нет
Всего: нет



Цитата(Akella @ 19.4.2011,  16:46)
а как тогда firebird пропускает некорректную дату? ответь! неправильый формат поля?

Немножко непривычно, что цитата в отдельном поле ) 


Потому что у поля хранящего дату тип varchar =) (не спрашивайте почему - структуру БД и клиентскую прогу спустило вышестоящее руководство) Кроме самого формата, еще нужно ограничить смысл вводимых данных - некоторые юзвери вводят например дату 10.10.1234 и прочую фигню
PM MAIL   Вверх
Akella
Дата 19.4.2011, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(rith2 @  19.4.2011,  18:07 Найти цитируемый пост)
отому что у поля хранящего дату тип varchar =)

ну... теперь мучайтесь

Добавлено через 4 минуты и 2 секунды
http://www.google.com/search?ie=UTF-8&...%B0%D1%82%D1%8B
PM MAIL   Вверх
rith2
Дата 20.4.2011, 06:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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 =) 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.