0

json twitter 応答からの URL と応答を解析する 2 つの正規表現関数が既にありましたが、それを拡張してハッシュタグも解析しようとしましたが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>';
    };

どこが間違っているかについての指針はありますか?

4

2 に答える 2

1

最後の置換の関数はハッシュ パラメータを受け取ります。戻り値では $1 の代わりにそれを使用します

于 2012-10-26T14:41:31.693 に答える
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 に答える