我需要检查 URL 是否是图像。
答案在这里
/(jpg|gif|png)$/.test(...
当非图像 URL 中有扩展名时,在我的(特殊)情况下会引发误报
http://www.example.com/jpg/bpgpage/
(PS:不能用jquery,只能用javascript/regex)
我需要检查 URL 是否是图像。
答案在这里
/(jpg|gif|png)$/.test(...
当非图像 URL 中有扩展名时,在我的(特殊)情况下会引发误报
http://www.example.com/jpg/bpgpage/
(PS:不能用jquery,只能用javascript/regex)
如果 uri 以扩展名结尾,这应该每次都有效。
代码:
var isUriImage = function(uri) {
//make sure we remove any nasty GET params
uri = uri.split('?')[0];
//moving on, split the uri into parts that had dots before them
var parts = uri.split('.');
//get the last part ( should be the extension )
var extension = parts[parts.length-1];
//define some image types to test against
var imageTypes = ['jpg','jpeg','tiff','png','gif','bmp'];
//check if the extension matches anything in the list.
if(imageTypes.indexOf(extension) !== -1) {
return true;
}
}
示例:
也许您可以.
在正则表达式之前添加一个点,如下所示:
/\.(jpg|gif|png)$/.test( ..
这将尝试匹配.jpg
,.gif
和.png
URL。
不过,您提到的正则表达式确实尝试搜索jpg
,gif
并且png
仅在 URL 的末尾,所以我不确定它是如何匹配http://www.example.com/jpg/bpgpage/
的。
如果你省略点.
,它仍然会匹配http://www.example.com/jpg
您可以在内容类型标头中验证这是一个函数示例:
async function verifyUrlImage(url){
try{
let resp= $.ajax(url);
await resp;
let headers=resp.getAllResponseHeaders().split(/\n/g);
for(let i=0;i<=headers.length;i++){
let hd=headers[i].split(': ')
if (hd[0]=='content-type' && hd[1].indexOf('image')==0)
return true;
}
}
catch{}
return false;
}
因此,如果内容类型以图像开头,则此链接是根据此图像类型的图像: https ://www.iana.org/assignments/media-types/media-types.xhtml#image
你可以测试它:
let isImage = await verifyUrlImage('https://www.gravatar.com/avatar/332cf4cffa6c5161c026485b98655079?s=48&d=identicon&r=PG');
这就是我要做的,其中“str”是您要匹配的字符串:
return (str.match(/\.(jpg|gif|png)$/)!= null);
// function for check the type of any source
function checkExtension(file) {
var extension = file.substr((file.lastIndexOf('.') + 1));
switch (extension) {
case 'jpg':
case 'png':
case 'gif':
return "img" // There's was a typo in the example where
break; // the alert ended with pdf instead of gif.
case 'mp4':
case 'mp3':
case 'ogg':
return "video"
break;
case 'html':
return "html"
break;
}
};
var ex = checkExtension("if-a-link-is-an-image.png")
console.log(ex)
为什么不使用 substr 拉出最后三个字符?
url.substr(url.length-3, 3);