3

これは、英数字のみが入力されているかどうかをチェックする私のコードですが、adasd @#$のようなものを入力すると、それでも一致し、理由がわかりません。これを修正する方法はありますか?

Match Match = Regex.Match(value.ToString(), "[0-9a-zA-Z]");
                if (Match.Success)
                {
                    return true;
                }
                else
                {
                    return false;
                }   
4

2 に答える 2

10

あなたが持っているものは、どこかに1文字または数字を含む任意の文字列と一致します。

複数の文字を許可するには、文字列の最初と最後にアンカー ( ^and $)を追加する必要があります。+

"^[0-9a-zA-Z]+$"

これは、「文字列全体が文字と数字で構成されている必要がある」ことを意味します。

また+、文字列に少なくとも 1 文字が含まれている必要があります。これはおそらく良いことですが、空の文字列にも一致させたい場合は、 に変更できます*

于 2013-03-01T11:05:20.440 に答える
0

正規表現[0-9a-zA-Z]は、入力文字列内の英数字をチェックします。入力文字列に a、d、a、s、d があるため、true を返します。
行う必要があるのは、正規表現に開始アンカーと終了アンカーを配置することです。新しい正規表現は次のようになります。

^[0-9a-zA-Z]+$
于 2013-03-01T11:08:43.490 に答える