JS/Jquery,匹配找不到PNG =匹配('/ gif | jpg | jpeg | png /')

AnA*_*ice 2 javascript regex jquery match

我有以下代码用于匹配fancybox可能的元素:

$('a.grouped_elements').each(function(){
    var elem = $(this);
    // Convert everything to lower case to match smart
    if(elem.attr('href').toLowerCase().match('/gif|jpg|jpeg|png/') != null) {
        elem.fancybox();
    }
});
Run Code Online (Sandbox Code Playgroud)

它适用于JPG,但由于某些原因它不匹配PNG.有人看到代码的错误吗?谢谢

Anu*_*rag 11

有几件事.

Match接受一个对象RegExp,而不是一个字符串.它可能在某些浏览器中有效,但绝对不是标准的.

"gif".match('/gif|png|jpg/'); // null????????????????????????????
Run Code Online (Sandbox Code Playgroud)

没有字符串

"gif".match(/gif|png|jpg/); // ["gif"]
Run Code Online (Sandbox Code Playgroud)

此外,您需要在文件名末尾检查这些,而不是在字符串中的任何位置.

"isthisagif.nope".match(/(gif|png|jpg|jpeg)/); // ["gif", "gif"]
Run Code Online (Sandbox Code Playgroud)

只搜索带有$ suffix的字符串末尾

"isthisagif.nope".match(/(gif|png|jpg|jpeg)$/); // null
Run Code Online (Sandbox Code Playgroud)

无需使用href小写,只需进行不区分大小写的搜索/i.

在图像扩展名之前查找一个点作为附加检查.

还有一些测试.我不知道你是如何使用字符串参数得到任何结果的.match.你在用什么浏览器?