Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
1

Как правильно написать регулярное выражение для валидатора?

08.12.2017, 19:53. Показов 2125. Ответов 5

Author24 — интернет-сервис помощи студентам
Пишу валидатор на QLineEdit, нужно, чтобы пользователь мог ввести градусы в поле, соответственно только число до 360 включительно.
Пока такой вариант написал:
C++ (Qt)
1
grad->setValidator(new QRegExpVAlidator(QRegExp("[1-3]{1}[0-6]{1}[0]{1} | [1-3]{1}[0-5]{1}[0-9]{1} | [1-9]{1}[0-9]{1} | [0-9]{1}"),0));
Но тут не все числа могу ввести, из тех, которые нужны.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2017, 19:53
Ответы с готовыми решениями:

Как правильно задать регулярное выражение?
Hello world! Строка из которой нужно сделать выборку подстрок которые удовлетворяют определенному...

Как правильно составить регулярное выражение
Добрый день. С perl познакомился совсем недавно и пока только разбираюсь. Вообщем вопрос такой. ...

Правильно составить регулярное выражение для строки, содержащей скобки
есть строка пытался сделать так , @"""\d+""+" но проблема в том что в "events" есть...

Подскажите как правильно составить регулярное выражение
Доброго времени суток. Имеется HTML страница с данными. Подскажите как правильно составить...

5
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
08.12.2017, 20:13 2
Лучший ответ Сообщение было отмечено Wyn как решение

Решение

C++ (Qt)
1
2
QRegExp(R"(\b([0-9]{1,2})\b|\b([1-2][0-9][0-9])\b|\b([3][0-5][0-9])\b|\b([3][0-6][0])\b)"); // для положительных 
QRegExp(R"([-]?(\b([0-9]{1,2})\b|\b([1-2][0-9][0-9])\b|\b([3][0-5][0-9])\b|\b([3][0-6][0])\b)"); //  для положительных и отрицательных
0
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
08.12.2017, 21:37 3
Есть какие-то причины не использовать QSpinBox?
0
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
11.12.2017, 22:01  [ТС] 4
Peoples, спасибо за Ваш ответ. Только у меня возникает ошибка, пишет. что неизвестная переменная R. Пробовал Ваш вариант в таком виде, чтобы избежать ошибки:
C++ (Qt)
1
grad->setValidator(new QRegExpVAlidator(QRegExp("(\b([0-9]{1,2})\b|\b([1-2][0-9][0-9])\b|\b([3][0-5][0-9])\b|\b([3][0-6][0])\b)"),0));
Но вот только в таком случае вообще в поле ничего не вводится. Не могли бы Вы пожалуйста объяснить для чего нужно R и какую роль играет эта буква в выражении?

NoMasters, спасибо Вам за идею, я об этом не догадался, можно использовать и его, только вот теперь интересно как с регулярными выставить данное выражение.
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
11.12.2017, 22:08 5
Лучший ответ Сообщение было отмечено proger10 как решение

Решение

Если убрали R, то должно быть
C++ (Qt)
1
QRegExp("(\\b([0-9]{1,2})\\b|\\b([1-2][0-9][0-9])\\b|\\b([3][0-5][0-9])\\b|\\b([3][0-6][0])\\b)");
Добавлено через 4 минуты
R - это значит сырая строка (raw string). Подавляет экранирование. То есть в обычной строке надо писать
C++
1
\\d
, в сырой можно просто
C++
1
\d
1
1 / 1 / 0
Регистрация: 22.02.2016
Сообщений: 142
11.12.2017, 23:55  [ТС] 6
Peoples, понятно спасибо за разъяснение, просто компилятор не знает, что такое R в данном выражении и не хочет компилить код, может нужно было какую-то дополнительную библиотеку включить, чтоб он распознавал этот символ как часть команды?
0
11.12.2017, 23:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2017, 23:55
Помогаю со студенческими работами здесь

Как правильно записать регулярное строковое выражение?
var text = "11.01.2010"; var date = new Date(text.replace(/(\d+).(\d+).(\d+)/, '$3/$2/$1'));...

Прошу указать как правильно составить регулярное выражение
Добрый день уважаемые форумчане и с праздником уважаемые форумчанки. Прошу помощи в составлении...

Написать регулярное выражение для float
ребят, возможно было уже, но я не нагуглил, суть - написать регулярное выражение для float но...

Как правильно написать выражение для вычисления даты
Прошу помочь! Нужно автоматизировать таблицу с оплатой Задача в следующем состоит, есть база туда...

Написать регулярное выражение для поиска строки
Доброго времени суток. Изучаю регулярные выражения. Столкнулся с проблемой. Как написать рег выр...

Написать регулярное выражение (для подсветки синтаксиса)
Собвственно пишу подсветку синтаксиса. Но использую регулялки. Как сделать что бы он искал вот...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru