Javascript 替换<;a>;如果它以字符串JQuery结尾

Javascript 替换<;a>;如果它以字符串JQuery结尾,javascript,jquery,Javascript,Jquery,我想找到所有具有href属性并以特定图像扩展名结尾的锚定标记。我想用图像标签代替它们 我尝试了以下方法,但与任何锚都不匹配: var imageTypes = ["jpeg", "jpg", "gif", "png", "bmp", "tif"]; $(".tfeedpost-postcontent a").each(function () { var actualA = $(this); var actualHref = $(this).attr("href"); if

我想找到所有具有
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("jpg$")) {
      //...
}

如何匹配任何扩展名?

如果要使用类型数组,请拉出文件类型,然后使用indexOf查看它是否在数组中

var fType = actualHref.split("/").pop().split(".")[1]
var isImg = imageTypes.indexOf(fType)>-1;

如果最后有一个查询字符串,这将失败。您最好使用
.pathname
而不是
.href

您可以使用管道操作符(在正则表达式中用作或),并要求它前面带有点,出现在字符串($)的末尾:

以下扩展还将正确处理具有类似于图像扩展的参数或散列的URL

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

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

以下操作将满足您的要求:

var imageTypes = ["jpeg", "jpg", "gif", "png", "bmp", "tif"];
$(".tfeedpost-postcontent a").each(function () {
    var url = $(this).attr("href");
    var ext = url.split('#').shift().split("?").shift().split('.').pop();
    if ($.inArray(ext, imageTypes) > -1) {
      $(this).replaceWith("<img src='" + url + "'>");
    }
});
var-imageTypes=[“jpeg”、“jpg”、“gif”、“png”、“bmp”、“tif”];
$(“.tfeedpost postcontent a”)。每个(函数(){
var url=$(this.attr(“href”);
var ext=url.split('#').shift().split(“?”.shift().split('.').pop();
if($.inArray(ext,imageTypes)>-1){
$(此)。替换为(“”);
}
});


编辑:更新以反映epascarello和trincot提到的情况,感谢您指出:现在扩展版本也可以很好地处理哈希。您可能希望在回答中执行类似的操作。提供的解决方案是否回答了您的问题?
 if (actualHref.match(/^[^?#]*\.(jpeg|jpg|gif|png|bmp|tif)($|[?#])/)) { ...
var imageTypes = ["jpeg", "jpg", "gif", "png", "bmp", "tif"];
$(".tfeedpost-postcontent a").each(function () {
    var url = $(this).attr("href");
    var ext = url.split('#').shift().split("?").shift().split('.').pop();
    if ($.inArray(ext, imageTypes) > -1) {
      $(this).replaceWith("<img src='" + url + "'>");
    }
});