Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
1

Регулярное выражение

02.12.2013, 13:39. Показов 3360. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята, подскажите, можно ли как нибудь "быстро" проверить занесенное в QLineEdit выражение на валидность?
Как на php:
PHP
1
2
3
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
    echo "Вхождение найдено.";
}
Но что то типа
C++ (Qt)
1
if(ui->lineEdit->text() == "lol") { return true; }
только вместо "lol" у меня должна быть регулярка "^[1-9][0-9]?[а-е);]$"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2013, 13:39
Ответы с готовыми решениями:

Регулярное выражение Qt
Надо пропарсить страницу, на наличие номеров телефонов факсов, т.е. есть строки вида: ....>Fax:...

Регулярное выражение (QRegExp)
Добрый день. Помогите пожалуйста правильно составить регулярное выражение, чтобы с html кода...

Регулярное выражение IP адреса
Может кто-нить подсказать, как с помощью регулярных выражений можно обспечаить ввод IP адреса в...

Составить регулярное выражение
Есть некое выражение: ---word.txt--- Как проверить существует ли в тексте это выражение, помогите...

10
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.12.2013, 14:14 2
WxMaper, осваивайте http://qt-project.org/doc/qt-5... egexp.html
0
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
02.12.2013, 17:06  [ТС] 3
Да я это читал. Я не понимаю почему у меня не работает конструкция
C++ (Qt)
1
2
3
    QRegExp rx("^[1-9][0-9]?[а-е]$");
    if(!rx.exactMatch(ui->lineEdit->text()))
        ui->lineEdit->setText("");
установленная на событии изменения текста (textChanged) - ничего не вводится вообще ни цифры, ни буквы.
Мне нужно проверить формат текста [любое число не ноль][любое число][любая буква], например принимаемые значения 11а, 80б, 3а.

Установка валидатора на lineEdit мне не подходит, потому что при такой регулярке если ввести значение "", то потом единицу нельзя будет удалять кнопками Backspace или Del. Оно и понятно, потому что поле не может содержать только букву, поэтому я хотел сделать проверку, что если в поле вводится не верное значение, то поле очищается. Маска тоже не подходит, потому что буква должна быть только из русского алфавита.
0
10 / 10 / 2
Регистрация: 28.11.2013
Сообщений: 63
02.12.2013, 17:30 4
Хм. Если не ошибаюсь ^[1-9] означает НЕ любое число, а ноль. Чтоб первый символ был не НОЛЬ Вам нужно просто использовать конструкцию [1-9]
0
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
02.12.2013, 17:31  [ТС] 5
Регулярка у меня написана правильно. Символ ^ означает начало строки
0
10 / 10 / 2
Регистрация: 28.11.2013
Сообщений: 63
02.12.2013, 17:33 6
аха) Давненько я регулярками не страдал)
0
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
02.12.2013, 17:39 7
C++ (Qt)
1
2
3
4
if (ui->lineEdit->text().contains(QRegExp("^[1-9][0-9]?[а-е]$")))
{
...
}
1
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
03.12.2013, 12:54  [ТС] 8
Спасибо, это то, что нужно

Добавлено через 17 часов 48 минут
Хм, а может кто подсказать как расширить эту регулярку, чтобы можно было ввести несколько одинаковых "блоков"? Т.е. сейчас у меня регулярка пропускает значения вида [число][число][буква] (например: "11а", "2а", "2", "20б"), а хотелось бы чтобы регулярка пропускала группу таких значений записанных через запятую (например: "11а, 2а" и "2, 20б, 30в"). Сейчас у меня такой код:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
void MainWindow::on_l_stat_textChanged(const QString &arg1) {
  if(arg1!="") {
    if(!ui->l_stat->text().contains(QRegExp("^[1-9][0-9]?[а-е]?$"))) {
      QToolTip::showText(ui->l_stat->mapToGlobal(QPoint()),"Некорректный ввод\nУкажите статью расписания болезней\nПример: 13б или 1а");
      ui->l_stat->setText(prevStats);
    }
    else
      prevStats = ui->l_stat->text();
  }
}
Я попробовал составить регулярку так: "^([1-9][0-9]?[а-е]?,? ?)+$", она работает в какой то степени, но пропускает значения типа "1111111111111", "11а, 2222222222" и тд =(
Может кто подсказать как правильно составить?

Добавлено через 1 час 13 минут
Решение нашел сам ^_^ может кому пригодиться...

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
void MainWindow::on_l_stat_textChanged(const QString &arg1) {
  if(arg1!="" && arg1 != prevStats+"," && arg1 != prevStats+", ") {
    if(!ui->l_stat->text().contains(QRegExp("^[1-9]([0-9]?[а-е]?)(, ?[1-9]([0-9]?[а-е]?)){0,3}$"))) {
      QToolTip::showText(ui->l_stat->mapToGlobal(QPoint()),"Некорректный ввод\nУкажите статью расписания болезней\nПример: 13б или 1а");
      ui->l_stat->setText(prevStats);
    }
    else
      prevStats = ui->l_stat->text();
  }
}
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
04.12.2013, 14:34 9
извращены!!!! (прошу прощения за мой французский) QRegExpValidator в помощь
0
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
04.12.2013, 14:54  [ТС] 10
я же написал, что валидатор не подходит
0
Maxim Prishchepa
04.12.2013, 15:05     Регулярное выражение
  #11

Не по теме:

Цитата Сообщение от WxMaper Посмотреть сообщение
я же написал, что валидатор не подходит
пардон, не дочитал....

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2013, 15:05

Регулярное выражение QRegExp
Помогите составить регулярное выражение для демо-примера в Qt4 "Custom Sort Filter Model", чтобы в...

Составить регулярное выражение
Есть html документ, в нем имеется несколько строк вида <tag type="1" name="2" value="3"> <tag...

Регулярное выражение не работает
Здравствуйте всем. Пишу проект на Qt 5,8, операционка убунту, Задача: взять первое слово в...

Как записать регулярное выражение?
Есть исходный код сайта и из него необходимо достать все названия магазинов. То есть есть несколько...


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

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