JavaScript哈希标签解析功能

时间:2012-10-26 14:35:23

标签: javascript regex twitter

我已经有两个正则表达式函数来解析url和来自json twitter响应的回复但是我试图将它扩展为解析哈希标记,但我得到undefined显示在主题标签的位置:

// 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>';
    };

关于我哪里出错的指示?

2 个答案:

答案 0 :(得分:1)

最后一次替换中的函数接受一个哈希参数,在你的回报中使用它而不是$ 1

答案 1 :(得分: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>';
});