我希望将一个HTML标记与另一个HTML标记包装在一个字符串中(所以不是DOM元素,而是一个普通字符串)。我创建了这个函数,但我想知道我是否可以在没有forEach循环的情况下一次性完成它。
这是工作函数:
function style(content) {
var tempStyledContent = content;
var imgMatches = tempStyledContent.match(/(<img.*?src=[\"'](.+?)[\"'].*?>)/g);
imgMatches.forEach(function (imgMatch) {
var imgTag = imgMatch;
var imgSrc = imgMatch.match(/src\s*=\s*"(.+?)"/)[1];
tempStyledContent = tempStyledContent.replace(imgTag,
"<a href=\"" + imgSrc + "\" data-fancybox>" + imgTag + "</a>");
});
return tempStyledContent;
}
参数content
是一个包含HTML代码的字符串。上面的函数输出与输入相同的html,但使用(fancybox) a标记将所有子img标记括起来。
所以像这样的输入字符串
"<div><img src='example.jpg'/></div>"
将输出
"<div><a href='example.jpg' data-fancybox><img src='example.jpg'/></a></div>"
有人能改进这一点吗?我对regex的了解太少,无法让它变得更好。
https://stackoverflow.com/questions/50629309
复制相似问题