Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ASP Validarors регулярные выражения!!! Need help! 
:(
    Опции темы
Jony_cs
Дата 16.10.2007, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема в следующем - необходимо сделать проверку TextBox на наличие в нем даты.
Необходимо разрешить ввод даты как в коротком формате: 1.1.1 = 01.01.2001 (1.1.98=01.01.1998)
так и в полном формате 01.01.2007
Поле не должно быть пустым.
Подскажите как это можно сделать?
PM MAIL   Вверх
tol05
Дата 16.10.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

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



RegularExpressionValidator и свой паттерн

а вообще
Код

DateTime d = new DateTime(1,1,1);
//или
DateTime d = new DateTime(01,01,01);

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

Это сообщение отредактировал(а) tol05 - 16.10.2007, 10:09


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Jony_cs
Дата 16.10.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все дело в том, что у меня стоит 2 валидатора на это поле:
RequiredFieldValidator - проверяет TextBox на пустоту
RangeValidator - проверяет TextBox на правильность введенной даты (от 01.01.1960 - 01.01.2100)


Проверка даты осуществляется только в формате (mm.dd.yyyy), но мне нужен еще и краткий формат (точно не знаю как он называется) т.е. когда 1.1.1 = 01.01.2001.

DateTime d = new DateTime(1,1,1); не выход т.к. TextBox сначала проверяется на стороне клиента!

Думаю возможно это решить с помощью RegularExpressionValidator, но т.к. не знаток регулярных выражений, то  smile 

PM MAIL   Вверх
tol05
Дата 16.10.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

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



Цитата(Jony_cs @  16.10.2007,  11:01 Найти цитируемый пост)
DateTime d = new DateTime(1,1,1); не выход

я тебе то же самое говорил smile

RangeValidator убери. Потому что ты разрешаешь юзеру вводить дату способами, непонятными машине.
Цитата(Jony_cs @  16.10.2007,  09:41 Найти цитируемый пост)
1.1.1 = 01.01.2001

тебе нужно проверить, соответствует ли текст текстбокса (не дата, а именно текст, потому что 1.1.1 - не дата) твоему паттерну, потом отправить все это на сервер и там уже парсить и приводить к дате.

RegularExpressionValidator используй.
Пример - в msdn на ключ RegularExpressionValidator

паттерн я бы использовал такой
^([0-3]\d|[1-9]).([0-1][1-9]|[1-9]).([0-2]\d{3}|[0-2]?[1-9])$

но не настаиваю на нем. В Regex я спец - не очень.





--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Jony_cs
Дата 19.10.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



все оказалось не так сложно, как казалось smile необходимо подставить паттерн:
^([0]{1}[1-9]{1}|[1]{1}[0-2]{1}|[1-9]{1})(\\|\.|\/)([0]{1}[1-9]{1}|[1]{1}[0-9]{1}|[2]{1}[0-9]{1}|[3]{1}[0-1]{1}|[1-9]{1})(\\|\.|\/)([1-9]{1}|[0]{1}[1-9]{1}|[10-99]{2}|[190]{3}[0-9]{1}|[19]{2}[10-99]{2}|[200]{3}[0-9]{1}|[20]{2}[10-99]{2})$

получившиеся форматы:
mm.dd.yyyy
mm.dd.yy
m.d.y

проверял на значениях

+ 11/23/2000
+ 1/1/1
+ 2/2/20
+ 01/1/1980
+ 12/1/2000
+ 8/03/1901
+ 04/12/99

причем можно использовать '.'   '/'   '\', т.е. 11.23\2000

единственная проблема в том, что 02.31.2000 существует!!!! smile, но это решаемо программно.

tol05 спасибо за участие

Это сообщение отредактировал(а) Jony_cs - 19.10.2007, 14:19
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ASP | Следующая тема »


 




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


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

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