Russian Qt Forum
Сентябрь 24, 2024, 16:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: qregexpvalidator и qlineedit  (Прочитано 3451 раз)
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
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Май 22, 2012, 12:02 »

надо тестировать свои выражения на каком-нибудь онлайн сервисе.

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

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
trot
Гость
« Ответ #2 : Май 22, 2012, 13:20 »

Код:
заметил одну ошибку: должно быть не [-.]
Это не ошибка.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #3 : Май 22, 2012, 13:29 »

да ну? в квадратных скобках спец. символами, которые нужно экранировать, являются лишь - и ^. в "чистом виде" дефис не может стоять в начале и в конце, поскольку задаёт диапазон, а крышка стоит только в начале.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
trot
Гость
« Ответ #4 : Май 22, 2012, 13:59 »

Дело в том, что если дефис стоит в начале или в конце, то он обозначет именно дефис, а не диапазон
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #5 : Май 22, 2012, 14:22 »

действительно, не знал. спасибо.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.166 секунд. Запросов: 23.