string Val = Regex.Replace(TextBox1.Text, @"[^a-z, A-z, 0-9]", string.Empty);
この式は、文字^および_と一致しません。これらの値を一致させるにはどうすればよいですか?
もう 1 つ、TextBox1.Text文字列値が 10 を超える場合、最後の文字列値 (11 番目の文字列値) が一致する必要があります。
^ が角括弧で囲まれている場合、特別な意味を持つことに注意してください。基本的に、文字クラスで指定されたもの以外のすべてに一致することを意味します'[]'。
"^"とを一致させたい場合は、次のよう"_"にキャレット(^)を開き括弧の後とは別の位置に置き、繰り返しを使用して文字の長さを制限します。
[\W_]
これにより、文字列全体の文字数が 10 であることを確認できます。
または、スラッシュを使用してエスケープします"\^"。
string Val = Regex.Replace(TextBox1.Text, @"[\W_]", string.Empty);
あなたの問題はA-z.
Aこれは、から までのすべての ASCII 文字Z、次に と の間にある文字Z(aとりわけ、^とを含む_)、aおよびと の間のすべての ASCII 文字に一致しzます。これは、^and_が正規表現と一致しないことを意味します (正規表現に含めたコンマとスペースも同様です)。
明確にするために、正規表現は次のように書くこともできます
[^a-zA-Z0-9\[\\\]^_` ,]
あなたはおそらく欲しかった
string Val = Regex.Replace(TextBox1.Text, @"[^a-zA-Z0-9]", string.Empty);