0

次の部分が正しく機能していません。

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

このコード ブロックは、ユーザーが入力した入力文字列を検証するためのものです。数字、フランス語と英語の文字、ダッシュ、アンダースコアのみを受け入れる必要があります。

実際、コードはほとんど機能しています。唯一の問題は、有効な文字も入力すると特殊文字が受け入れられることです。したがって、文字列 "!@#@" は false を返しますが、文字列 "hell!@^ooo" は true を返します。

正規表現のみを受け入れるには、正規表現を適切に使用するにはどうすればよいですか?

ありがとうございました

4

3 に答える 3

1

QRegExp::exactMatch()を使用することもできます。これは、正規表現を^および$文字で囲むことと本質的に同等です。

于 2012-11-27T22:47:08.470 に答える
1

^andを追加$して、式が文字列の一部だけでなく文字列全体をカバーする必要があることを示すことをお勧めします。

QRegExp exp ("^[À-Ÿà-ÿA-Za-z0-9\\-\\_]+$");
  if (!formatedName.contains(exp)) {
    success = false;
  }
于 2012-11-27T20:57:04.857 に答える