4

ユーザーがデータグリッドビュー内に特殊文字を入力しているときに、エラーメッセージを入力する必要があります。今のところ私は次のものを持っています:

if (Regex.IsMatch(columnValue.ToString(),"^[A-Za-z0-9]$"))
                {
                    MessageBox.Show("You may not use special characters.", "Saving not allowed at this time", MessageBoxButtons.OK, MessageBoxIcon.Error);  

この正規表現は機能し、特殊文字は許可されませんが、文字間にスペースがある場合はifステートメントに該当します。これは許可する必要があります。

スペースを許可するが、特殊文字は許可しないようにするにはどうすればよいですか?

ありがとう、

4

5 に答える 5

12

正規表現にスペースを追加したいだけだと思います。

if (Regex.IsMatch(columnValue.ToString(),"^[ A-Za-z0-9]$"))

正規表現を作成するときは、一般に、逐語的な文字列演算子@を使用することをお勧めします。特殊な式の多くでは、円記号を使用する必要があるためです。

if (Regex.IsMatch(columnValue.ToString(), @"^[ A-Za-z0-9]$"))

パターン内の空白を無視するように正規表現に明示的に指示している場合は、スペース文字をエスケープする必要があります。

if (Regex.IsMatch(columnValue.ToString(), @"^[\ A-Za-z0-9]$", RegexOption.IgnorePatternWhitespace))

空白文字(スペース、タブ、改行など)を使用できるようにする場合は、空白文字クラスを使用できます。\s

if (Regex.IsMatch(columnValue.ToString(), @"^[\sA-Za-z0-9]$"))

アップデート

グループ内の文字を除外した正規表現が必要だったようです。

現在の正規表現は、文字列の先頭から^末尾まで$、グループ内の1文字だけを探していA-Za-z0-9ます。正反対に一致させたい場合は、次のように、の!前にnot演算子を使用できます。Regex.IsMatch

if (!Regex.IsMatch(columnValue.ToString(), @"^[ A-Za-z0-9]$"))

ただし、正規表現で除外された文字のグループを記述したい場合は、グループにを入れることができ^ます。^がグループ内にある場合、その後に続く[^]すべてのキャラクターは試合から除外されます。

正規表現[A-Z]は、任意の文字AZに一致します。正規表現は、 AZ[^A-Z]以外の任意の文字に一致します。

それがあなたが探していたものである場合、あなたはあなたの声明を次のように変えることができます:

if (Regex.IsMatch(columnValue.ToString(), @"[^A-Za-z0-9\ ]"))

このステートメントは、グループに含まれていない文字を含むすべての文字列に一致します。したがって、「Hello World」と入力すると、一致しません。「Hello!World」と入力すると、「!」と一致します。グループに含まれていません。

注:先頭^と末尾$が削除されました。この正規表現では、文字列のどこにも予期していなかった文字にのみ一致するため、文字列の長さは気にしません。

于 2012-12-31T21:20:13.363 に答える
3
if (Regex.IsMatch(columnValue.ToString(),"^[A-Za-z0-9 ]+$"))
{
   MessageBox.Show("You may not use special characters.", "Saving not allowed at this time", MessageBoxButtons.OK, MessageBoxIcon.Error); 
}

またはテストする単一のブールチェックとして

bool isValid = Regex.IsMatch(columnValue, "^[a-z0-9 ]+$", RegexOptions.IgnoreCase);
于 2012-12-31T21:22:09.180 に答える
1

すべての数字、文字列、スペースを含めることができます:)

"^[a-z]|[A-Z]|[0-9]|[ ]$"

また

"^[\d+]|[\w+]|[ ]$"
于 2012-12-31T21:20:34.013 に答える
0

この正規表現を試してみませんか:[a-zA-Z0-9\s]+

于 2012-12-31T21:22:04.690 に答える
0

文字クラスにスペースを追加します。つまり、の^[A-Za-z0-9 ]$代わりに使用し^[A-Za-z0-9]$ます。これでも、などの他の空白文字は使用できなくなりますtab

于 2012-12-31T21:19:15.370 に答える