Russian Qt Forum

Qt => Вопросы новичков => Тема начата: stima от Май 22, 2012, 11:22



Название: qregexpvalidator и qlineedit
Отправлено: stima от Май 22, 2012, 11:22
Код:
    //url test regexp
    QRegExp validURLRegex("^(http|https)://[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(([0-9]{1,5})?/?.*)$");
    QRegExpValidator *validator = new QRegExpValidator(validURLRegex, this);

    homeEdit->setValidator(validator);

Проблема в том, что валидатор не "ограничивает ввод" невалидного url


Название: Re: qregexpvalidator и qlineedit
Отправлено: kambala от Май 22, 2012, 12:02
надо тестировать свои выражения на каком-нибудь онлайн сервисе.

заметил одну ошибку: должно быть не [-.] а [\-.]

если тебе не нужно ничего сохранять в группы, то лучше используй несохраняющие скобки (?:<выражение>)


Название: Re: qregexpvalidator и qlineedit
Отправлено: trot от Май 22, 2012, 13:20
Код:
заметил одну ошибку: должно быть не [-.]
Это не ошибка.


Название: Re: qregexpvalidator и qlineedit
Отправлено: kambala от Май 22, 2012, 13:29
да ну? в квадратных скобках спец. символами, которые нужно экранировать, являются лишь - и ^. в "чистом виде" дефис не может стоять в начале и в конце, поскольку задаёт диапазон, а крышка стоит только в начале.


Название: Re: qregexpvalidator и qlineedit
Отправлено: trot от Май 22, 2012, 13:59
Дело в том, что если дефис стоит в начале или в конце, то он обозначет именно дефис, а не диапазон


Название: Re: qregexpvalidator и qlineedit
Отправлено: kambala от Май 22, 2012, 14:22
действительно, не знал. спасибо.