で
おかげであなたは間違った場所に$
を入れています。あなたが.exe
、.js
以外のものを見つけたい場合は、
(\.|\/)(?!(exe|js)$)
Regex Demo
理由を使用: - 先読みはゼロ幅アサーションです。それは彼らがどんな文字も消費しないことを意味します。あなたの正規表現
(\.|\/)(?!exe|js)$
では、先読みを使用してexe
かjs
直後.
をチェックされています。チェックされるとすぐに、位置は.
の直後にリセットされます。今あなたの正規表現は、それが文字列の末尾であるかどうかを$
を使って調べています。しかし、文字が残っているので、文字列の終わりではなく、あなたの正規表現は拡張子に失敗します。
以下は、文字列abcd.jpg
の正規表現 について説明するためのビジュアルです。 .
がexe
またはjs
<のいずれかに一致させるべきではないjpg
、後に以下の何(だけ明確にするためのスペース)
abcd . jpg
^^ ^^
|| ||
(Matches .) (New position after consuming .)
--- 良いここまで
先読みがゼロであるため-widthを指定すると、次のものが何であるかを確認した後、位置はそのままのままです。exe
でもjs
abcd . jpg
^^
||
Check whether its $ i.e. end of string. This is False because we have j. So no match is returned
ここ
あなたは、オーディオおよびビデオファイルをブラックリストに登録したい場合は、スターターである
(?:[.\\])(?!(mp3|m4a|wmv|mp4|mkv)$)\w+
Regex Demo