2012年6月1日金曜日

【正規表現、javascript】Twitterの発言にリンクタグをつける


正規表現には方言があるらしい。
jsでTwitterの文言を正規表現処理したけど、結構むずかしかった。
とりあえず、"/g"ってすごい!
"/g"を書かないと、Tweet内のリンクを1つしか処理できない。
"/g"を書くと全部処理してくれる。
"/g"は偉大なのであった。

urlをリンクタグ処理
tweet = tweet.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&~\?\/.=]+/g, function(url) {
return url.link(url);
});
            
リプライをリンクタグ処理
tweet = tweet.replace(/@[a-zA-z_]*/g, function(reply) {
var no_mark_rep = reply.replace(/@/, "");
return reply.link("https://twitter.com/"+no_mark_rep);
});
            
ハッシュをリンクタグ処理
tweet = tweet.replace(/[#]+[A-Za-z0-9-_-ヶ亜-]+/g, function(hash) {
var no_mark_hash = hash.replace(/[#]/, "");
return hash.link("https://twitter.com/%23"+no_mark_hash);
});

3 件のコメント:

  1. このコメントは投稿者によって削除されました。

    返信削除
  2. Maybe /[##]+[^\u0000-\u0080]+/g is better since it matches all Unicode chars rather than just English and Japanese

    返信削除
  3. Thank you very much! I didn't know I can write it by Unicode chars.

    返信削除