我想找到所有具有href属性并以某些特定图像扩展名结尾的锚标记。我想用图片标签代替它们。

我尝试了以下方法,但它与任何锚点都不匹配:

var imageTypes = ["jpeg", "jpg", "gif", "png", "bmp", "tif"];
$(".tfeedpost-postcontent a").each(function () {
    var actualA = $(this);
    var actualHref = $(this).attr("href");
    if (actualHref.match(imageTypes)) {
      actualA.replaceWith("<img src='" + actualHref + "'>");
    }
});


我也尝试过这个:

if (actualHref.match(imageTypes + "$")) {
      //...
}


如果我发表以下内容,它会起作用,但显然仅适用于一种类型的图像。

if (actualHref.match("jpg$")) {
      //...
}


我该如何匹配任何扩展名?

最佳答案

您可以使用管道运算符(在正则表达式中用作OR),并要求它以小数点开头并出现在字符串($)的末尾:

 if (actualHref.match(/\.(jpeg|jpg|gif|png|bmp|tif)$/)) {
     ....
 }


以下扩展名也可以正确处理带有参数或哈希值(类似于图像扩展名)的网址

 if (actualHref.match(/^[^?#]*\.(jpeg|jpg|gif|png|bmp|tif)($|[?#])/)) { ...


此表达式要求没有“?”或“#”出现在匹配的扩展名之前,并允许其中之一出现在匹配的扩展名之后。

10-06 04:38