| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > ASP > ASP Validarors регулярные выражения!!! Need help! |
| Автор: Jony_cs 16.10.2007, 09:41 |
| Проблема в следующем - необходимо сделать проверку TextBox на наличие в нем даты. Необходимо разрешить ввод даты как в коротком формате: 1.1.1 = 01.01.2001 (1.1.98=01.01.1998) так и в полном формате 01.01.2007 Поле не должно быть пустым. Подскажите как это можно сделать? |
| Автор: tol05 16.10.2007, 10:07 | ||
| RegularExpressionValidator и свой паттерн а вообще
дает первое января первого года. Так что рекомендую хотя бы год полностью писать. |
| Автор: Jony_cs 16.10.2007, 11:01 |
| Все дело в том, что у меня стоит 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, но т.к. не знаток регулярных выражений, то |
| Автор: tol05 16.10.2007, 12:03 |
я тебе то же самое говорил RangeValidator убери. Потому что ты разрешаешь юзеру вводить дату способами, непонятными машине. тебе нужно проверить, соответствует ли текст текстбокса (не дата, а именно текст, потому что 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 я спец - не очень. |
| Автор: Jony_cs 19.10.2007, 14:12 |
| все оказалось не так сложно, как казалось ^([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 существует!!!! tol05 спасибо за участие |