如何将锚标记添加到String中的URL

时间:2014-02-18 15:04:06

标签: jquery string anchor

我有一些包含youtube链接的字符串(字符串中的长度和位置不同,并非每个字符串都包含URL)和文本。这些字符串将被写入段落标签,但我希望URL可以点击,所以我需要在URL周围使用锚标签。

我设法找到一种方法来访问包含链接的段落:

if($("#facebookFeed p:contains('http')").length){
    //do stuff
}

我被困在这里,不确定这是不是正确的做法。

2 个答案:

答案 0 :(得分:3)

您必须使用正则表达式来匹配字符串中的URL,然后将它们包装在锚点中:

$('p:contains("http://")').html(function(index, html) {
    var url = html.match(/(((ftp|https?):\/\/)[\-\w@:%_\+.~#?,&\/\/=]+)|((mailto:)?[_.\w-]+@([\w][\w\-]+\.)+[a-zA-Z]{2,3})/g);

    $.each(url, function(i, v) {
        html = html.replace(v, '<a href="' + v + '">' + v + '</a>');        
    });

    return html;
});

以上示例使用this answer

中的正则表达式模式

Here's a fiddle

答案 1 :(得分:1)

以下将做

$("#facebookFeed p:contains('http')").each(function() {
    $(this).wrapInner('<a href="' + $(this).text() + '"/>');
});

如此处所示:http://jsfiddle.net/uyHQ2/

当然,这假设某种HTML布局。 如果您的不同,请发布HTML示例。