链接 正则表达式 将 HTML 替换为新的



我正在尝试运行正则表达式来执行此操作:

替换文档中 apk 文件的所有实例:

<a href="http://download.mydomain.com/files/androidfile.apk">

跟:

<a target="_blank" href="http://mydomain.com?f=http://download.mydomain.com/files/androidfile.apk">

使用此 JQUERY 代码:

$('body').contents().filter(function() {
    return this.nodeType === 3;
}).each(function() {
    $(this).replaceWith($(this).text().replace(/<a href~/^.*.(apk)$/i, 'http://mydomain.com?f=">$1</a>'));
});

所以本质上,在download.mydomain.com/files/androidfile.apk之前删除代码,即<a href="http://并替换为 <a target="_blank" href="http://mydomain.com?f=http:// .一个页面中可能有几个这样的,所以我需要一个可能匹配和替换所有的解决方案。

正则表达式和替换似乎不起作用,这可能是一个解决方案。

所以总而言之,我希望能够在 JQuery 中做到这一点:

<html>
<a href="http://download.domain.com/files/androidfile1.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile2.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile3.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile4.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile5.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
</html>

对此:

<html>
<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile1.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile2.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile3.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile4.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://mydomain2.com?f=http://download.domain.com/files/androidfile5.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
</html>

你正在做的是矫枉过正,虽然它不起作用,为什么要选择页面上的所有元素? 如果要选择a元素,为什么不使用$('a')选择它们?若要将字符串添加到href属性,可以使用attr方法。

$('a').filter(function() {
    return this.href.indexOf('apk')
}).attr('href', function(i, href) {
    return 'http://mydomain.com?f=' + href
}).attr('target', '_blank');

http://jsfiddle.net/NCC7u/

下面的

代码应该可以解决问题。我没有使用正则表达式,而是使用带有选择器的结尾。这应该达到相同的目的,并且执行得更快。我没有完全重写标签,而是使用 jQuery.attr() 修改了属性。一个活生生的例子就在这里。

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
    $('a[href$=apk]').each(function()
    {
        var mydomain = "http://mydomain2.com?f=";
        var $this = $(this);
        $this.attr("href", mydomain+$this.attr("href"));
        $this.attr("target", "_blank");
    });
});
</script>
</head>
<body>
<a href="http://download.domain.com/files/androidfile1.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile2.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile3.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile4.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
<a href="http://download.domain.com/files/androidfile5.apk"><img src="theme/download.gif" border=0 alt="download" height="120px" width="130px"></a><br/>
</body>
</html>

生成的输出为:

<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile1.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile2.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile3.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile4.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>
<a target="_blank" href="http://mydomain2.com?f=http://download.domain.com/files/androidfile5.apk"><img src="theme/download.gif" alt="download" height="120px" border="0" width="130px"></a><br>

最新更新