0

I already had two regex functions to parse url's and replies from a json twitter response but I tried to extend it to parse hash tags aswell but I am getting undefined displayed in palce of the hashtag:

// process links, reply and hash tags
tweet = tweet.replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, function(url) {
        return '<a href="'+url+'">'+url+'</a>';
    }).replace(/B@([_a-z0-9]+)/ig, function(reply) {
        return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
    }).replace(/#([a-zA-Z0-9]+)/g), function(hash) {
        return '<a class="hashtag" target="_blank" href="http://twitter.com/#search?q='+$1+'">#'+$1+'</a>';
    };

Any pointers on where I'm going wrong?

4

2 回答 2

1

$1变量未定义,将其替换为hash.substring(1)

此外,您需要在匿名函数声明之后关闭最后一个函数调用。

tweet = tweet.replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, function(url) {
    return '<a href="'+url+'">'+url+'</a>';
}).replace(/B@([_a-z0-9]+)/ig, function(reply) {
    return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
}).replace(/#([a-zA-Z0-9]+)/g, function(hash) {
    return '<a class="hashtag" target="_blank" href="http://twitter.com/#search?q='+hash.substring(1)+'">#'+hash.substring(1)+'</a>';
});
于 2012-10-26T14:41:46.940 回答
1

最后一个替换中的函数接受一个散列参数,在你的返回中使用它而不是 $1

于 2012-10-26T14:41:31.693 回答