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

发布于 2024-08-27 20:13:44 字数 346 浏览 9 评论 0原文

我有以下代码,用于匹配 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 不匹配。有人看到代码有错误吗? 谢谢

I have the following code which I use to match fancybox possible elements:

$('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();
    }
});

It works great with JPGs but it isn't matching PNGs for some reason. Anyone see a bug with the code?
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

鹿港小镇 2024-09-03 20:13:44

有几件事。

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

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

没有字符串

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

另外,您可能希望在文件名的末尾而不是字符串中的任何位置检查这些字符串。

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

只在带有 $ 后缀的字符串末尾搜索

"isthisagif.nope".match(/(gif|png|jpg|jpeg)$/); // null

不需要将 href 设置为小写,只需执行不区分大小写的搜索 /i 即可。

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

还有一些测试。 我不知道您如何使用 .匹配。你用的是什么浏览器?

A couple of things.

Match accepts an object of RegExp, not a string. It may work in some browsers, but is definitely not standard.

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

Without the strings

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

Also, you would want to check these at the end of a filename, instead of anywhere in the string.

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

Only searching at the end of string with $ suffix

"isthisagif.nope".match(/(gif|png|jpg|jpeg)$/); // null

No need to make href lowercase, just do a case insensitive search /i.

Look for a dot before the image extension as an additional check.

And some tests. I don't know how you got any results back with using a string argument to .match. What browser are you on?

耳根太软 2024-09-03 20:13:44

我猜它会匹配字符串中的任何位置(它将匹配“http://www.giftshop.com /”例如)可以被视为一个错误。我会用

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

I guess the fact that it'll match anywhere in the string (it would match "http://www.giftshop.com/" for instance) could be considered a bug. I'd use

/\.(gif|jpe?g|png)$/i
空心空情空意 2024-09-03 20:13:44

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

You are passing a string to the match() function rather than a regular expression. In JavaScript, strings are delimited with single quotes, and regular expressions are delimited with forward slashes. If you use both, you have a string, not a regex.

‖放下 2024-09-03 20:13:44

这对我来说非常有效: /.+\.(gif|png|jpe?g)$/i

.+ ->任何字符串

\. ->接下来是一个点。

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

$ ->现在字符串的结尾是预期的

/i ->不区分大小写模式:同时匹配 sflkj.JPGlkjfsl.jpg

This worked perfectly for me: /.+\.(gif|png|jpe?g)$/i

.+ -> any string

\. -> followed by a point.

(gif|png|jpe?g) -> and then followed by any of these extensions. jpeg may or may not have the letter e.

$ -> now the end of the string it's expected

/i -> case insensitive mode: matches both sflkj.JPG and lkjfsl.jpg

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文