2016-10-25 4 views
0

画像URLを検証したいが、クエリ文字列では殆ど確認できない。 https://images.company.com/img/800X450/vehicle/201610/858823_589_1475572549658.gif?bg=000000&wmi=nRegexがクエリ文字列で画像URLを検証する

http://images.company.com/img/800X450/vehicle/201610/858823_599_1475572549658.jpeg?bg=000000&wmi=n&pne=ur

http://images.company.com/img/800X450/vehicle/201610/858823_599_1475572549658.png

だから、基本的な事はJPGで任意の画像を検証することです| PNG | GIF | JPEG拡張、クエリ文字列パラメータの有無にかかわらず。

正規表現(@ "。(?i)(jpg | png | gif | jpeg)")正規表現を使用してみました。 URLは、正確な拡張子JPGまたはPNGまたはGIFまたはJPEGを持って、その後いくつかのクエリ文字列パラメータをオプションであればどのように私は検証することができます http://images.company.com/img/800X450/vehicle/201610/858823_599_1475572549658.pngg OR http://images.company.com/img/800X450/vehicle/201610/858823_599_1475572549658.giff

しかし、問題は次のように、それは画像を検証しているのですか?

+1

たぶん、このような何か: '(JPG | JPEG | GIF | PNG)(( \?。*)$ | $) ' - 拡張子の後には、クエリ文字列、または文字列の最後のいずれかが続きます。 [hERE](https://regex101.com/r/YrgpUf/3) – sideroxylon

+1

実際に私はそうでもできます: '(jpe?g | gif | png)(?= \?| $)'ここのように:https ://regex101.com/r/bQDTiS/1 – antoni

+0

@antoni - 純粋なバリデーションのために、それはすてきな解決策です。私は空のクエリ文字列を検証できる唯一のリスクだと思う。 – sideroxylon

答えて

0

記載されているファイルの拡張子は、文字列のクエリ文字列または末尾が続かなければならないと主張:

(jpg|jpeg|gif|png)((\?+*)?$|$) 

HERE

+1

\。(?i) (jpg | png | gif | jpeg)(?= \?| $)は私のために働きます。 – maverick

関連する問題