Как использовать 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 (), что по сути эквивалентно замене вашего регулярного выражения с помощью ^
а также $
персонажи.