0

いくつかのファイルタイプの形式を制限し、他のすべてのファイルタイプを正規表現検証式で許可したいと思います。私が試したのは、いくつかの許可されたファイルタイプといくつかの制限されたファイルタイプを指定することですが、制限されたファイルタイプを指定し、他のすべてのタイプをアップロードできるようにしたいです。

asp.netファイルアップロードコントロールで正規表現を使用しています。私の正規表現は今このようになっています

^.*\.(csv|xlsx|xls|doc|docx|pdf|txt|zip|(?!exe)|(?!bat)|(?!msi))$

正常に動作し、exe batとmsiを制限していますが、他のすべてのファイル形式を許可したい

4

1 に答える 1

1

ネガティブルックビハインドを使用します。

/^.*(?<!\.(exe|bat|msi))$/i

あなたが使用している否定的な先読みはあなたを助けていません。まったく。文字列の最後でそれらを一致させようとしているため、これらは自明に真実であり、ルックアラウンドは何も消費しないため、文字列の最後の位置にexeまたはbatを追加することはできません。

後世のために、段階的な説明:

^

ご存じのとおり、文字列の先頭に一致させてください。

.*

文字列全体を消費します。

(?<! ... )

振り返って、消費していないことを確認してください。

\.

文字通りのドットとそれに続く...

(exe|bat|msi)

verbottenファイルタイプのいずれか。

$

次に、文字列の終わりに一致します。

また、大文字と小文字を区別しないようにすることも選択しました。

編集、jsの場合:

/^(?:(?!\.(exe|bat|msi)$).)*/i

うめき声の異なる説明:

^

文字列の先頭

(

グループを開始

.

任意のキャラクター

(?!...)

ネガティブな先読み。続かない:

\.

リテラルドット。

(exe|bat|msi)

禁止されているファイルの種類。

$

文字列の終わり

)*

グループを閉じて、それを任意の回数一致させます。

于 2012-09-14T15:26:51.017 に答える