【问题标题】:parsing image name from img tag with regex使用正则表达式从 img 标签解析图像名称
【发布时间】:2015-05-21 06:03:01
【问题描述】:

我在 div 中有一个 <img> 标记,我想通过 javascript 和正则表达式获取图像名称。

现在,我成功地将<img> 标记检索为字符串。

var bigImage = $(this).find('.img-container img')
var bigImageSrc = bigImage[0].src
var regx = /g\bplaceholderdefault\.jpg?\b/g
var match = bigImageSrc.match(regx)

我想让这个表达式看看字符串中是否有placeholderdefault.jpg

顺便说一下,bigImageSrc 返回一个有效的字符串,我用typeof检查过它

现在的问题是即使bigImageSrc 的值为http://localhost/yogurtbar/images/slider/placeholderdefault.jpg,它也会返回null

我不明白为什么它没有在字符串中检测到placeholderdefault.jpg。我在Regexr 中尝试(并生成)了这个正则表达式,它可以工作。

我在代码中做错了什么?

【问题讨论】:

  • placeholderdefault.jpg != placeholder-default.jpg
  • 文件名中是否应该有破折号?
  • 嗯,删除了破折号。对不起。那是不正确的。我在图像中没有破折号。还是不行。
  • 你为什么写jpg??你真的想让g 可选吗?

标签: javascript jquery html regex


【解决方案1】:

不需要regex。\

您可以使用indexOf。与regex 相比,这将运行得更快:

if (bigImageSrc.indexOf('placeholderdefault.jpg') > -1) {
    // Present

如果你想用regex查看:

if (/placeholderdefault\.jpg/.test(bigImageSrc)) {
    // Present
}

你需要转义.

【讨论】:

  • 我认为你必须逃脱“。”在正则表达式中。
【解决方案2】:

您需要删除开头的g

var regx = /g\bplaceholderdefault\.jpg?\b/g;
            ^
            |

由于在p(占位符中)之前不存在字符g,因此您的正则表达式无法找到匹配项。

正确的是,

var regx = /\bplaceholderdefault\.jpg?\b/g;

而且,我认为您希望同时匹配 jpgjpeg 格式。

var regx = /\bplaceholderdefault\.jpe?g\b/g;

【讨论】:

  • 开头的g 是干什么用的?我只是从一个站点生成代码,所以我不完全理解它
【解决方案3】:

简单的方法是使用split()获取图像名称

var bigImageSrc = 'http://localhost/yogurtbar/images/slider/placeholder-default.jpg';    
var filename = bigImageSrc.split("/").pop();

 console.log(filename);
 //output placeholder-default.jpg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2014-08-28
    • 1970-01-01
    相关资源
    最近更新 更多