3

正規表現を使用して、文字列に 0-9、AZ、az、\、/、または - のみが含まれているかどうかを確認しようとしました。私が使用Regex validator = new Regex(@"[0-9a-zA-Z\-/]*");した文字列は有効です。

チェックは次のようになります。if(!validator.IsMatch(myString))

どうしたの?

4

3 に答える 3

4

私があなたが欲しいものを理解しているなら。あなたのパターンは

new Regex(@"^[0-9a-zA-Z\\\-/]*$");

^と記号は$、それぞれ文字列の最初と最後に一致するアンカーです。これらがないと、パターンはそのクラスの任意の文字を含むすべての文字列と一致します。それらを使用すると、そのクラスの文字のみを含む文字列と一致します。

また、バックスラッシュ文字を含めるように指定しましたが、元のパターンは\-文字クラスに含まれていました。これは、文字クラス内のハイフンのエスケープシーケンスにすぎません。文字クラスにバックスラッシュも含めるには、それを個別に指定する必要があります(エスケープも同様)。したがって、結果の文字クラスには、\\(円記号)の後に\-(ハイフン)が続きます。

*これで、 「ゼロ以上」を意味するため、これは空の文字列と一致します。空でない文字列のみを照合する場合は、次を使用します。

new Regex(@"^[0-9a-zA-Z\\\-/]+$");

+1つ以上」を意味します。

于 2013-03-07T16:25:06.057 に答える
0

+の代わりに使用*

new Regex(@"[0-9a-zA-Z\-/]+");
于 2013-03-07T16:27:33.977 に答える
0

フォームの正規表現を書くと

"[some character class]*"

すべての文字列に一致します。すべての文字列には、0 から多数の文字クラスが含まれます。

使いたかったのかもしれません

new Regex(@"[0-9a-zA-Z\-/]+")

文字クラスの 1 から多数を指定します。

于 2013-03-07T16:26:00.783 に答える