Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
fised
0 / 0 / 0
Регистрация: 20.12.2015
Сообщений: 17
#1

Сделать валидатор - C++

22.12.2015, 20:32. Просмотров 379. Ответов 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; 
 
 
}
З.Ы. Прошу строго не судить, только учусь.
З.Ы.Ы. Я правда пытался сам)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2015, 20:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сделать валидатор (C++):

Надо сделать так если программа запущена с параметром -admin тогда написать доступ открыт. Как это сделать? - C++ Builder
Надо сделать так если программа запущена с параметром -admin тогда написать доступ открыт. Как это сделать? Приложение консольное. ...

Как сделать отдельные записи в таблице по строкам, чтобы сделать запросы? - C++
Вот моя программа.. она производит чтение, только символами... #include <iostream> #include <fstream> #include <iomanip> #include...

Я хочу сделать программу - чат. Что б обмениваться сообщениями. Как такое сделать? Какой код? - C++
Если можно то с объяснениями пожалуйста. На языке с ++

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

Валидатор ругается! - HTML, CSS
http://maxim.onegaonline.ru/igl/lomo.htm http://validator.w3.org/unicorn/ 1) Почему он ругается на <meta http-equiv="pragma"...

Валидатор. Ошибки - HTML, CSS
Валидатор нашел две ошибки: 1) Bad value type for attribute type on element input. <input type="type" name="input" class="input"> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
23.12.2015, 07:59 #2
Цитата Сообщение от fised Посмотреть сообщение
но я пошел самым, на мой взгляд, эффективным, а именно - регулярки.
Прочитай мою подпись
Цитата Сообщение от fised Посмотреть сообщение
строку вида "45км 5" принимает за верную
Потому что ([д|с]?м?), это значит, что единицы измерения может и не быть.
Вообще вот
C++
1
"^\\d+[к|д]?м\\s+\\d+[д|с]?м$"
правда это не совсем правильно, т.к. например такая строка 123дм 123дм пройдет. Правильную регулярку написать сложно, т.к. не знаю всех возможных вариаций входных данных.
fised
0 / 0 / 0
Регистрация: 20.12.2015
Сообщений: 17
23.12.2015, 12:47  [ТС] #3
Да, слышал о этой поговорке)
Вот в том то и проблема, что тут одной регуляркой не обойтись, надо условия проверки сделать. Я понимаю что проверяем если в инпуте такая то величина, и запрещаем вводить ее еще раз, но вот как запретить, не хватает знаний) Но все равно спасибо за помощь, буду пробовать сам)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2015, 12:47
Привет! Вот еще темы с ответами:

Валидатор говорит... - HTML, CSS
Народ,валидатор пишет такую ошибку: required attribute "ALT" not specified …iv><IMG border=0 width=174 height=174...

Ругается валидатор - HTML, CSS
HTML-валидатор браузера Firefox ругается на строку: <table background="table_background.jpg" width="450"> Ошибка 1: there is no...

Валидатор форм - PHP
Нужно написать простенький валидатор форм, в котором должны быть поля типа text, phone, e-mail, поле text должен быть не пустым, а phone и...

валидатор ругается - HTML, CSS
Доброе время суток, валидатор ругается Attribute value not allowed on element input at this point. Вот строка на ругается <input...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru