1

私はいくつかの検証を行った Entity Framework モデルを持っています。特に、英数字、スペース、句読点を受け入れる正規表現です。ただし、スラッシュ「/」を許容可能な文字として追加しようとすると、許容できない文字 (この場合はコンマ) を追加できるようです。

式 1:

[RegularExpression(@"[\w\s.()&'-]+", ErrorMessage = "Contains an illegal character")]

これは、スラッシュを除くすべての予想される文字で機能します (つまり、コンマは受け入れませんが、スラッシュも受け入れません)。

式 2:

[RegularExpression(@"[\w\s.()&'-/]+", ErrorMessage = "Contains an illegal character")]

これはスラッシュを受け入れるようになりました (良い) だけでなく、カンマも受け入れるようになりました (望ましくない)

式 3:

[RegularExpression(@"[\w\s.()&'-\/]+", ErrorMessage = "Contains an illegal character")]

スラッシュをエスケープしようとする試み。experssion 2 と同じ効果で、スラッシュとコンマを受け入れます

これは、私が行う必要がある奇妙なエスケープまたは同様のトリックですか? .Net正規表現の副作用? 「Expression 2」はスラッシュを受け入れるがコンマは受け入れないという印象を受けましたが、そうではないようです。

4

2 に答える 2

1

「-」文字は、文字クラスの最後の文字でなければなりません。そうでない場合は、許容される文字の範囲を定義します: [\w\s.()&'/-]+'

于 2013-05-29T04:08:22.237 に答える
1

これは、ダッシュが原因です-。文字クラス内のダッシュは範囲を表します (例: a-zまたは ) 0-9。(これは、辞書式ではなく ASCII ベースの範囲です。ASCII テーブルを見ると、コンマ,(44) が無方向アポストロフィ'(39) とスラッシュ/(47) の間にあることがわかります。 )-を範囲として解釈しないようにするには、文字クラスの最初または最後の文字として配置する必要があります。

于 2013-05-29T04:09:30.963 に答える