我想找到所有具有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)($|[?#])/)) { ...
此表达式要求没有“?”或“#”出现在匹配的扩展名之前,并允许其中之一出现在匹配的扩展名之后。