質問

設定は私ができるようにしたいすべてのファイルタイプの行をファイルに

私が持っています:

jpeg|jpg|tiff|tif|png|gif|bmp|eps|wmf|emf|pdf|doc|docx|zip|rar|ppt|pptx|mdb|xls

私はこれらのファイルのみを許可するRegularExpressionValidatorを制御するFileUploadの隣に持っていると思います。

私は、正規表現のバリデータのValidationExpressionプロパティを設定PageLoadイベントでそれを処理しています。

私が試します:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string regex = "jpeg|jpg|tiff"; //A huge list of filetypes.
        upFiles_RegularExpressionValidator.ValidationExpression = 
            @"^.*\.(" + regex +")$";
    }
}

しかし、それは大文字と小文字を区別します。 私の唯一の問題は、今では影響を受けないようにすることです。

役に立ちましたか?

解決

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string regex = "([jJ][pP][eE][gG])|([jJ][pP][gG])|([tT][iI][fF][fF])"; //A huge list of filetypes.
        upFiles_RegularExpressionValidator.ValidationExpression = 
            @"^.*\.(" + regex +")$";
    }
}

他のヒント

あなたは、クライアント側validionをオフにしてのみ、サーバー側の検証を使用する場合は、

、.NETサポートケースinsensitivteありoperatior(?I)を使用することができます。あなたは、クライアントとサーバー側の両方で動作しますsomethignをしたい場合は、

のようなものに頼る必要があるかもしれません

[JJ] [Ppを] [EE] [Ggを

あなたのファイル拡張子のそれぞれについて。あなたの拡張機能のそれぞれのコードが含まれていなかった、パターンを外挿することは、かなり簡単なはずです。

答:

^.*\.(?i-s:pdf|exe)$

どの意味:

ValidationExpression = @"^.*\.(?i-s:pdf|exe)$"; //will match pdf PDF exe EXE

string regex = "jpeg|jpg|tiff|tif|png|gif|bmp|eps";
ValidationExpression = @"^.*\.(?i-s:file_types)$".Replace("file_types", regex);

これは、動的に変更リスト

に対してファイルを検証するには非常に効率的な方法でなければなりません

ちなみに、私はこののオンライン正規表現ビルダー、素晴らしい無料のツールでそれを作った!

正規表現は、サーバー側でRegularExpressionValidatorで正常に動作します。問題は、それがJavaScriptの正規表現の風味が処理方法を知らないので、失敗したクライアント検証を行うことをしようとしたときに上昇し、「?私は」(ケース非感受性が「I」とjavascriptの正規表現で達成されます)。あなたのページにこのスクリプトを追加することで、この問題を解決することができます。私は、スクリプトはかなりまっすぐ進むと思います。

   <script type="text/javascript" language="javascript"> 
        function RegularExpressionValidatorEvaluateIsValid(val) 
        { 
          var value = ValidatorGetValue(val.controltovalidate); 
          if (ValidatorTrim(value).length == 0) 
            return true; 

          var regex = null; 
          if(val.validationexpression.indexOf("(?i)")>=0) 
          { 
             regex = new RegExp(val.validationexpression.replace("(?i)",""),"i"); 
          } 
          else 
          { 
             regex = new RegExp(val.validationexpression); 
          } 

          var matches = regex.exec(value);

          return (matches != null && value == matches[0]); 
        } 
   </script>

は、.NETでこの検証サーバサイドをやっている場合は、

のようなものを使用することができます

VBます:

    Dim re As New Regex("(jpg)|(gif)", RegexOptions.IgnoreCase)
    re.IsMatch("image.jpg")

のC#ます:

    var re = new Regex("(jpg)|(gif)", RegexOptions.IgnoreCase);
    re.IsMatch("image.jpg")
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top