Как использовать QRegExp

Следующая часть не работает должным образом:

  QRegExp exp ("[À-Ÿà-ÿA-Za-z0-9\\-\\_]+");
  if (!formatedName.contains(exp)) {
    success = false;
  }

Этот блок кода предназначен для проверки входных строк, введенных пользователями. Он должен принимать только цифры, французские и английские символы, тире и подчеркивание.

На самом деле, код почти работает. Единственная проблема заключается в том, что допускаются специальные символы, если я также ввожу допустимые символы. Таким образом, строка "!@#@" Возвращает false, а строка "hell!@^ Ooo" возвращает true.

Как правильно использовать регулярные выражения, чтобы принимать только мое регулярное выражение?

благодарю вас

3 ответа

Решение

Я бы предложил добавить ^ а также $ чтобы указать, что выражение должно охватывать всю строку, а не только ее часть.

QRegExp exp ("^[À-Ÿà-ÿA-Za-z0-9\\-\\_]+$");
  if (!formatedName.contains(exp)) {
    success = false;
  }

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

"^[À-Ÿà-ÿA-Za-z0-9\\-\\_]+$"

Это обеспечит проверку всей строки.

Вы также можете использовать QRegExp:: correctMatch (), что по сути эквивалентно замене вашего регулярного выражения с помощью ^ а также $ персонажи.

Другие вопросы по тегам