Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 20.12.2015
Сообщений: 17

Сделать валидатор

22.12.2015, 20:32. Показов 4724. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые) На форуме только поселился, если кто-то может помочь, то буду очень благодарен)
К сожалению, я не очень силен(надеюсь, что пока), в регулярных выражениях, да и с qt мало поработал, вопрос может показаться глупым, но ближе к делу)
Задача: написать валидатор, вводить можно строку - стока с указанием единиц измерения, к примеру 25645км_35м, где "_" - это пробел. Все это делается в qt.
Способов решения много, но я пошел самым, на мой взгляд, эффективным, а именно - регулярки.
Вообще мой код работает, но работает кое как, а точнее, строку вида "45км 5" принимает за верную.
Прошу помочь исправить данную проблему, и еще, помочь со следующим. Как сделать проверку введеных единиц измерения? В ТЗ не указано, что это надо учитывать, но логически будет неверно, если у нас будет строка "123см 23км", то есть что бы большие единицы шли перед малыми, а не после.
C++
1
2
3
4
5
6
7
8
9
10
11
12
QValidator::State ExampleValidator::validate( QString & input, int & pos ) const
{
    QRegExp rx("^\\d{1,}[к|д]?м+\\s+\\d{1,}([д|с]?м?)$"); 
    QRegExp rx2("^\\d{1,}[к|д]?м?\\s?$"); 
    if (input.contains(rx2)) 
    return QValidator::Intermediate; 
    if (input.contains(rx)) 
    return QValidator::Acceptable; 
    return QValidator::Invalid; 
 
 
}
З.Ы. Прошу строго не судить, только учусь.
З.Ы.Ы. Я правда пытался сам)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.12.2015, 20:32
Ответы с готовыми решениями:

Валидатор и QDoubleSpinBox
Есть QDoubleSpinBox, необходимо реализовать его так, чтобы можно было устанавливать лишь числа из определенного диапазона, кратные...

Валидатор для строки
Я начинающий в Qt, так что не судите строго. Пытаюсь, получить правильный валидатор для строк: номер поезда и пункт отправления. Задача про...

Динамический валидатор поля TextField QML
Доброго времени суток! Стоит следующая задача: Есть Qml-ка, в ней 2 поля TextField. Первое поле активно, второе поле readOnly до тех...

2
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.12.2015, 07:59
Цитата Сообщение от fised Посмотреть сообщение
но я пошел самым, на мой взгляд, эффективным, а именно - регулярки.
Прочитай мою подпись
Цитата Сообщение от fised Посмотреть сообщение
строку вида "45км 5" принимает за верную
Потому что ([д|с]?м?), это значит, что единицы измерения может и не быть.
Вообще вот
C++
1
"^\\d+[к|д]?м\\s+\\d+[д|с]?м$"
правда это не совсем правильно, т.к. например такая строка 123дм 123дм пройдет. Правильную регулярку написать сложно, т.к. не знаю всех возможных вариаций входных данных.
0
0 / 0 / 0
Регистрация: 20.12.2015
Сообщений: 17
23.12.2015, 12:47  [ТС]
Да, слышал о этой поговорке)
Вот в том то и проблема, что тут одной регуляркой не обойтись, надо условия проверки сделать. Я понимаю что проверяем если в инпуте такая то величина, и запрещаем вводить ее еще раз, но вот как запретить, не хватает знаний) Но все равно спасибо за помощь, буду пробовать сам)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.12.2015, 12:47
Помогаю со студенческими работами здесь

Придумать валидатор, проверяющий корректность строки
Программа нужна с использованием Qt5 на Visual Studio с использованием класса QString. В лабораторной работе №1 следует, используя...

Создать валидатор, проверяющий корректность строки
Используя приложенный проект, создать валидатор, проверяющий корректность строки. Необходимо заменить код функции QValidator::State...

Как в вебформе сделать валидатор который бы проверял два поля, а не одно
Здравствуйте. Подскажите пожалуйста как можно сделать в вебформе проверку двух полей, точнее у меня есть поле с минимальной суммой и поле с...

Валидатор
многие на сайт ставят код: <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"> многие не ставят, насколько он...

валидатор
Приходили как-то давно к начальству ребятишки и сказали мы продвинем поднимем ну итд как обычно ... А в попе ваш сайт сейчас потому что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru