javascript - 如何使用 jquery regex 将字符串中的链接替换为可点击的版本?

标签 javascript jquery regex twitter

请参阅下面代码中的第 8 行,并附上注释:

<script>
$(function(){
    $.getJSON('http://twitter.com/status/user_timeline/TWITTER.json?count=1&callback=?',twitterJSON);
    function twitterJSON(data){
        var twitterOut     = '<p>'+data[0].text+'</p><strong>- '+data[0].user.name+'</strong>';
        var twitterOutAt   = twitterOut.replace(/\B@([\w-]+)/gm,'<a href="http://twitter.com/$1">@$1</a>');
        var twitterOutHash = twitterOutAt.replace(/\B#([\w-]+)/gm,'<a href="http://search.twitter.com/search?q=$1">#$1</a>');
        var twitterOutDone = twitterOutHash.replace(/(href="|<a.*?>)?[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g,'<a href="$1">$1</a>'); // not working :(
        $('.twitter').html(twitterOutDone);
    }
});
</script>

任何重构代码的帮助将不胜感激!

例如:必须有一种方法来链接.replace,这样就不必一次又一次地分配一个新的var。我试过 var twitterOut.replace().replace()... 但这似乎不起作用:(

最佳答案

这是我使用的工作函数:

jQuery.fn.urlize = function() {
    if (this.length > 0) {
        this.each(function(i, obj){
            // making links active
            var x = $(obj).html();
            var list = x.match( /\b(http:\/\/|www\.|http:\/\/www\.)[^ <]{2,200}\b/g );
            if (list) {
                for ( i = 0; i < list.length; i++ ) {
                    var prot = list[i].indexOf('http://') === 0 || list[i].indexOf('https://') === 0 ? '' : 'http://';
                    x = x.replace( list[i], "<a target='_blank' href='" + prot + list[i] + "'>"+ list[i] + "</a>" );
                }

            }
            $(obj).html(x);
        });
    }
};

在你的情况下:

$('.twitter').urlize();

关于javascript - 如何使用 jquery regex 将字符串中的链接替换为可点击的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8353474/

相关文章:

python - 如何使用 * 或捕获字符串?用 python 正则表达式中的组

c++ - 棘手的子串问题

javascript - D3 中交替轴线颜色

javascript - 是否可以在 Viewport 的项目属性中使用循环?

javascript - 如何在不刷新页面的情况下连续更新 PHP 变量?

javascript - 用于在 Rails 中无限滚动的 jScroll

javascript - 用于根据分配给表行的类过滤 HTML 表的 jQuery 按钮

javascript - 提交表单时添加CSS javascript

javascript - if 语句条件由 JavaScript 中 if 语句内的内容触发

python - 如何在多行 block 中查找与模式不匹配的行?