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

时间:2010-04-04 19:52:44

标签: javascript jquery regex 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();
    }
});

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

4 个答案:

答案 0 :(得分:10)

有几件事。

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

<击>

<击>
"gif".match('/gif|png|jpg/'); // null​​​​​​​​​​​​​​​​​​​​​​​​​​​​

<击>

没有字符串

"gif".match(/gif|png|jpg/); // ["gif"]

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

<击>

<击>
"isthisagif.nope".match(/(gif|png|jpg|jpeg)/); // ["gif", "gif"]

<击>

仅在$ suffix

的字符串末尾搜索
"isthisagif.nope".match(/(gif|png|jpg|jpeg)$/); // null

无需将href设为小写,只需执行不区分大小写的搜索/i

在图片扩展名前面找一个点作为附加检查。

And some tests.我不知道如何使用.match的字符串参数获得任何结果。你在用什么浏览器?

答案 1 :(得分:3)

我猜它会匹配字符串中的任何地方(例如它会匹配“http://www.giftshop.com/”)可能被认为是一个错误。我用

/\.(gif|jpe?g|png)$/i

答案 2 :(得分:0)

您将字符串传递给match()函数而不是正则表达式。在JavaScript中,字符串用单引号分隔,正则表达式用正斜杠分隔。如果你同时使用它们,你有一个字符串,而不是一个正则表达式。

答案 3 :(得分:0)

这对我很有用:/.+\.(gif|png|jpe?g)$/i

.+ - &gt;任何字符串

\. - &gt;接下来是一个观点。

(gif|png|jpe?g) - &gt;然后是任何这些扩展。 jpeg可能有也可能没有字母e。

$ - &gt;现在是它预期的字符串的结尾

/i - &gt;不区分大小写的模式:匹配sflkj.JPGlkjfsl.jpg