Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярные выражения 
:(
    Опции темы
dimes
Дата 9.12.2004, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(chaos @ 9.12.2004, 14:50)
если задача стоит проверить правельность даты то нужно делать такие проверки
иначе нет смысла тк твой шаблон проверяет только на порядок и кол-во цифр

Да?
А если будет так : 2004-11-31 или 2003-02-29 ?
Коректность даты регуляркой проверить нельзя только порядок и кол-во цифр
PM ICQ   Вверх
korob2001
Дата 9.12.2004, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

Вот этим ты вообще не понятно что пытался сделать:

Думаю что этим он пытался ответить на этот вопрос:

Народ, подскажите мне как проверить ввод пользователя. Строка может содержать только цифры от 0 до 9, символ пробела, символ ':' и символ '-'.
Заранее спасибо!!!


Как видишь, здесь вообще ничего не сказано, по поводу даты и времени.

Цитата

Вот тебе пример, вроде все работает

Код 

$str='2994-10-12 22:12:65';

if ($str =~ m/(2\d{3})\-(0[1-9]|1[0-2])\-(0[1-9]|1[0-9]|2[0-9]|3[01])/) {
print "data ok";

if ($str =~ m/\d{4}-\d{2}-\d{2}\s([01][0-9]|2[0-3])smile[0-5][0-9])smile[0-5][0-9])/) {
  print "time ok";
}
else {print "  time error";}

}
else {print "data error";}




ps Инересны ваши замечания

Да, ты совсем не экономишь ресурсы.
1.) Почему же ты не проверяешь год?
2.) Используя в регулярных выражениях символ "|", ты нагружаешь систему. А у тебя он встречается сколько раз?
3.) Круглых скобок понаставил, а переменные $1, $2 и т.д. не используешь. ( а это, драгоценная, память ;))) ).

Вобщем если есть у тебя книга "Perl - Библиотека программиста", открой станицу 104 и почитай о том, как парсит дату Том Кристиансен. Давай не будем считать его за лоха, чел можно сказать жизнь посвятил языку Perl.

Удачи.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
chaos
Дата 10.12.2004, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

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



Хорошо!!! Я принел во внимания Ваши замечания, действительно конструкция моя нагружена ненужными элементами, но сдругой стороны это как ни как пример, а тот кто им будет пользоваться может как ему нужно его изменить!!!

Вот еще один примерчик набросал:
Код

use English;
use Time::Local;

$date='2004-12-31 23:00:60';
($yyyy, $mm, $dd,$t, $hh24, $mi, $ss) = ($date =~ /(\d+)-(\d+)-(\d+)(\s(\d{2}):(\d{2}):(\d{2}))?/);
eval {timelocal($ss, $mi, $hh24, $dd, $mm-1, $yyyy)};
if ($EVAL_ERROR eq '') {print "ok";}
else {print "error";}


ps Также интересны ваши замечания
Добавлено @ 14:29
Цитата(dimes @ 9.12.2004, 17:58)
Цитата(chaos @ 9.12.2004, )
если задача стоит проверить правельность даты то нужно делать такие проверки
иначе нет смысла тк твой шаблон проверяет только на порядок и кол-во цифр

Да?
А если будет так : 2004-11-31 или 2003-02-29 ?
Коректность даты регуляркой проверить нельзя только порядок и кол-во цифр

ты прав!
новое решение см. выше

Это сообщение отредактировал(а) chaos - 10.12.2004, 14:30
PM WWW   Вверх
Phoinix
Дата 10.12.2004, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



chaos

Вот это:
Код

($yyyy, $mm, $dd,$t, $hh24, $mi, $ss) = ($date =~ /(\d+)-(\d+)-(\d+)(\s(\d{2}):(\d{2}):(\d{2}))?/);


Заменить на:
Код

($yyyy, $mm, $dd, $hh24, $mi, $ss) = split /[\-\s\:]/,$date;


Это сообщение отредактировал(а) Phoinix - 10.12.2004, 19:08
PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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