| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Регулярные выражения |
| Автор: study 9.12.2004, 12:28 |
| Народ, подскажите мне как проверить ввод пользователя. Строка может содержать только цифры от 0 до 9, символ пробела, символ ':' и символ '-'. Заранее спасибо!!! |
| Автор: Phoinix 9.12.2004, 12:37 |
| study ~ /^[\d\s\:\-]+$/; |
| Автор: GoodBoy 9.12.2004, 12:40 |
| $var =~ /^[0-9 :-]+$/; |
| Автор: study 9.12.2004, 12:42 |
| Спасибо, сейчас попробую. |
| Автор: chaos 9.12.2004, 12:42 | ||
Сколько может быть пробелов, :,- ??? и приведи пример |
| Автор: GoodBoy 9.12.2004, 12:45 | ||
а какая разница? |
| Автор: study 9.12.2004, 13:17 | ||
Я правильно проверяю? А пример 2004-12-06 14:09:47, но времени может и не быть...
|
| Автор: chaos 9.12.2004, 13:31 | ||||||
А пример 2004-12-06 14:09:47 я бы проверял так:
и так далее |
| Автор: korob2001 9.12.2004, 13:32 | ||
|
| Автор: chaos 9.12.2004, 13:35 | ||||
а если будет вот такая хрень: 2004-43-32 это же не дата а п воему шаблону всебудет хорошо |
| Автор: korob2001 9.12.2004, 13:39 | ||
А для этого, нужно узнать, стоит-ли вообще делать такую проверку. ;))) Потому как за каждое уточнение прийдётся платить производительностью. |
| Автор: chaos 9.12.2004, 13:50 | ||||
если задача стоит проверить правельность даты то нужно делать такие проверки иначе нет смысла тк твой шаблон проверяет только на порядок и кол-во цифр |
| Автор: study 9.12.2004, 14:07 |
| chaos, можешь дать кусок готового кода? Pls.... |
| Автор: chaos 9.12.2004, 14:22 | ||||
Вот тебе пример, вроде все работает
ps Инересны ваши замечания |
| Автор: chaos 9.12.2004, 16:57 | ||||||
Вот этим ты вообще не понятно что пытался сделать:
|
| Автор: dimes 9.12.2004, 17:58 | ||
Да? А если будет так : 2004-11-31 или 2003-02-29 ? Коректность даты регуляркой проверить нельзя только порядок и кол-во цифр |
| Автор: korob2001 9.12.2004, 20:36 | ||||
Думаю что этим он пытался ответить на этот вопрос: Народ, подскажите мне как проверить ввод пользователя. Строка может содержать только цифры от 0 до 9, символ пробела, символ ':' и символ '-'. Заранее спасибо!!! Как видишь, здесь вообще ничего не сказано, по поводу даты и времени.
Да, ты совсем не экономишь ресурсы. 1.) Почему же ты не проверяешь год? 2.) Используя в регулярных выражениях символ "|", ты нагружаешь систему. А у тебя он встречается сколько раз? 3.) Круглых скобок понаставил, а переменные $1, $2 и т.д. не используешь. ( а это, драгоценная, память ;))) ). Вобщем если есть у тебя книга "Perl - Библиотека программиста", открой станицу 104 и почитай о том, как парсит дату Том Кристиансен. Давай не будем считать его за лоха, чел можно сказать жизнь посвятил языку Perl. Удачи. |
| Автор: chaos 10.12.2004, 14:22 | ||||||
| Хорошо!!! Я принел во внимания Ваши замечания, действительно конструкция моя нагружена ненужными элементами, но сдругой стороны это как ни как пример, а тот кто им будет пользоваться может как ему нужно его изменить!!! Вот еще один примерчик набросал:
ps Также интересны ваши замечания Добавлено @ 14:29
ты прав! новое решение см. выше |
| Автор: Phoinix 10.12.2004, 18:54 | ||||
| chaos Вот это:
Заменить на:
|