Russian Qt Forum
Октябрь 18, 2018, 22:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Можно ли проверить регуляркой, что строка состоит только из заданных символов?  (Прочитано 405 раз)
mal
Новичок

Offline Offline

Сообщений: 6


Просмотр профиля
« : Май 08, 2018, 17:07 »

Привет всем.

Дано: строка QString
Дан набор символов  допустим 'X' , 'Y' и  '-'
Например
XXX---XXYYX   =>- результат проверки true
XXX---X+YYX  =>  результат проверки false

Можно пробежать по каждому символу  в строке, и проверить на соответствие заданным  символам.
Но мне кажется  это как то топорно.
Можно ли сделать эту проверку регуляркой используя QRegExp?
Если   да  подскажите как?
Спасибо
Записан
mal
Новичок

Offline Offline

Сообщений: 6


Просмотр профиля
« Ответ #1 : Май 08, 2018, 18:51 »

Получилось как то так

bool MyClass::is_match(const QString str_in)
{
    QRegularExpression re("^[-XY]*$" );
    auto match = re.match( str_in );
    qDebug() << ( match.hasMatch() ? "   matched" : "mismatched" ) << ":" << str_in;
    return match.hasMatch();
}

Проблема решена.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4024



Просмотр профиля WWW
« Ответ #2 : Май 09, 2018, 00:01 »

только лучше тогда использовать + вместо * в регулярке, иначе пустая строка тоже будет подходить
Записан

Изучением 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.175 секунд. Запросов: 22.